トランスポート セキュリティとWindows 認証

次のシナリオでは、Windows セキュリティによって保護されている Windows Communication Foundation (WCF) クライアントおよびサービスを示します。プログラミング詳細については、 、「方法 : Windows 資格情報でサービスをセキュリティで保護する」を参照してください。

イントラネットの Web サービスでは人事情報を表示しています。クライアントは Windows フォーム アプリケーションです。このアプリケーションは、Kerberos コントローラで保護されたドメインに展開されています。

Windows 認証を利用したトランスポート セキュリティ

特性 説明

セキュリティ モード

トランスポート

相互運用性

WCF のみ

認証 (サーバー)

認証 (クライアント)

○ (Windows 統合認証を使用)

○ (Windows 統合認証を使用)

整合性

機密性

トランスポート

NET.TCP

バインディング

NetTcpBinding

サービス

下のコードと構成は、別々に実行することを想定しています。次のいずれかを行います。

  • 構成を使用せずに、コードを使用してスタンドアロン サービスを作成する。
  • 提供された構成を使用してサービスを作成し、エンドポイントを定義しない。

コード

次のコードは、Windows セキュリティを使用するサービス エンドポイントの作成方法を示します。

構成

コードの代わりに次の構成を使用して、サービス エンドポイントをセットアップできます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <behaviors />
    <services>
      <service behaviorConfiguration="" name="ServiceModel.Calculator">
        <endpoint address="net.tcp://localhost:8008/Calculator" 
                  binding="netTcpBinding"
          bindingConfiguration="WindowsClientOverTcp" 
                  name="WindowsClientOverTcp"
                  contract="ServiceModel.ICalculator" />
      </service>
    </services>
    <bindings>
      <netTcpBinding>
        <binding name="WindowsClientOverTcp">
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <client />
  </system.serviceModel>
</configuration>

クライアント

次のコードと構成は、別々に実行します。以下のいずれかの操作を行います。

  • コード (およびクライアント コード) を使用してスタンドアロン クライアントを作成します。
  • エンドポイント アドレスを定義しないクライアントを作成します。代わりに、引数として構成名を受け取るクライアント コンストラクタを使用します。次に例を示します。

コード

クライアントを作成する場合のコード例を次に示します。バインディングは、クライアントの資格情報の種類が Windows に設定された、TCP トランスポートによるトランスポート モード セキュリティを使用するように構成されます。

構成

コードの代わりに次の構成を使用して、クライアントを作成できます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="NetTcpBinding_ICalculator" >
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint address="net.tcp://localhost:8008/Calculator" 
                binding="netTcpBinding"          
                bindingConfiguration="NetTcpBinding_ICalculator" 
                contract="ICalculator"
                name="NetTcpBinding_ICalculator">
      </endpoint>
    </client>
  </system.serviceModel>
</configuration>

関連項目

タスク

方法 : Windows 資格情報でサービスをセキュリティで保護する

概念

セキュリティの概要