0

Azureサービスバスリレーを使用して、会社のネットワーク外のユーザーにWCFサービスを公開しようとしています。

ある程度は成功しましたが、通信が機能することを証明するために、WCFサービスに実装されているカスタムのユーザー名とパスワードの認証をすべて削除する必要がありました。

私はしばらくの間このトピックを調べて読んでいて、NetTcpRelaySecurityモードは、トランスポートからTransportWithMessageCredentialへの変更を行う必要がある場所であると信じています(これは、クライアントとサービスがネットワーク内で使用するものであるため)

では、構成ファイルでこの設定を変更するにはどうすればよいですか?今のところ例が見つかりません。

また、私はこれを正しい方法で行っていますか?ユーザー名とパスワードのクライアント資格情報を外部クライアントアプリケーションからサービスバスを介してWCFサービスに渡すことはできますか?

4

1 に答える 1

0

確かに、サンプル構成はそれほど多くありません。構成のために試すことができるものを次に示します。

NetTcpRelayBindingConstructor NetTcpRelayBinding コンストラクター (EndToEndSecurityMode、RelayClientAuthenticationType)

EndToEndSecurityMode には、次の列挙があります。

 Member name    Description
 None       Security is disabled.
 Transport  Security is provided using a transport security, typically SSL.
 Message        Security is provided using SOAP message security.
 TransportWithMessageCredential     A secure transport (for example, HTTPS) provides integrity, confidentiality, and authentication while SOAP message security provides client authentication.

RelayClientAuthenticationには以下の列挙があります。

    Member name         Description
    RelayAccessToken    If specified by a listener, the client is required to provide a security token. 
    None                If specified by a listener, the client will not be required to provide a security token. This represents an opt-out mechanism with which listeners can waive the Access Control protection on the endpoint.

私が見た最も近い構成例は -
http://msdn.microsoft.com/en-us/library/windowsazure/microsoft.servicebus.nettcprelaybinding.aspxです。

<bindings>
    <!-- Application Binding -->
    <netTcpRelayBinding>
      <binding name="customBinding">
        <!-- Turn off client authentication -->
        <security relayClientAuthenticationType="None" />
    </netTcpRelayBinding>
  </bindings>

使用できる例を次に示します。

<bindings>
    <!-- Application Binding -->
    <netTcpRelayBinding>
      <binding name="customBinding">
        <!-- Turn off client authentication -->
        <security endToEndSecurityMode=”TransportWithMessageCredential”  relayClientAuthenticationType="None" />
    </netTcpRelayBinding>
  </bindings>

ただし、それを使用するには、Service Bus バインディング拡張要素が machine.config またはアプリケーション構成ファイルに追加されていることを確認する必要があります。そうでない場合は、Visual Studio がエラーをスローします。

クライアントからサービスへのエンド ツー エンドのセキュリティは、サービス バス固有のものではなく、単なる標準の WCF です。SB が必要とするのは、以下の relayClientAuthenticationType だけです。

<security mode=""  relayClientAuthenticationType="RelayAccessToken">

nettcprelaybinding のセキュリティのセットアップは、nettcpbinding と似ている必要があります。nettcpbinding サンプルを出発点として使用できます。

于 2012-04-18T16:14:15.683 に答える