次の方法で共有


トランスポート セキュリティの概要

Windows Communication Foundation (WCF) のトランスポート セキュリティ機構は、使用するバインディングとトランスポートによって異なります。たとえば、WSHttpBinding クラスを使用する場合、トランスポートは HTTP であり、トランスポートをセキュリティで保護するための主要機構は SSL (Secure Sockets Layer) over HTTP (一般に HTTPS と呼ばれます) です。このトピックでは、WCF システムに用意されたバインディングで使用する主要なトランスポート セキュリティ機構について説明します。

ms729700.note(ja-jp,VS.90).gifメモ :
SSL セキュリティを .NET Framework 3.5 以降と共に使用すると、WCF クライアントでは証明書ストア内の中間証明書と SSL ネゴシエーション中に受信した中間証明書の両方を使用して、サービスの証明書に対して証明書チェーンの検証を実行します。.NET Framework 3.0 では、ローカルの証明書ストアにインストールされている中間証明書のみが使用されます。

BasicHttpBinding

既定では、BasicHttpBinding クラスはセキュリティを提供しません。このバインディングは、セキュリティを実装していない Web サービス プロバイダとの相互運用性のためにデザインされています。ただし、Mode プロパティを None 以外の値に設定することにより、セキュリティを有効にすることができます。トランスポート セキュリティを有効にするには、このプロパティを Transport に設定します。

IIS との相互運用性

BasicHttpBinding クラスは、主に既存の Web サービスと相互運用するために使用されます。これらのサービスの多くは、インターネット インフォメーション サービス (IIS) によってホストされます。そのため、このバインディングのトランスポート セキュリティは、IIS サイトとシームレスに相互運用できるようにデザインされています。IIS サイトと相互運用するには、セキュリティ モードを Transport に設定した後、クライアント資格情報の種類を設定します。資格情報の種類の値は、IIS ディレクトリのセキュリティ機構に対応しています。モードを設定し、資格情報の種類を Windows に設定するコードを次に示します。この構成は、クライアントとサーバーが同じ Windows ドメインに存在する場合に使用できます。

または、次のように構成します。

<bindings>
  <basicHttpBinding>
    <binding name="SecurityByTransport">
      <security mode="Transport">
        <transport clientCredentialType="Windows" />
       </security>
     </binding>
  </basicHttpBinding>
</bindings>

以下のセクションでは、その他のクライアント資格情報の種類について説明します。

基本

これは、IIS の基本認証方法に対応しています。このモードを使用する場合は、Windows ユーザー アカウントと、適切な NTFS ファイル システムのアクセス許可を使用して IIS サーバーを構成する必要があります。IIS 6.0 詳細については、 、「Enabling Basic Authentication and Configuring the Realm Name」を参照してください。IIS 7.0 詳細については、 、「IIS 7.0 Beta: Configure Basic Authentication」を参照してください。

証明書

IIS には、クライアントに証明書を使用してログオンすることを要求するオプションがあります。この機能により、IIS はクライアント証明書を Windows アカウントに関連付けることもできます。IIS 6.0 詳細については、 、「Enabling Client Certificates in IIS 6.0」を参照してください。IIS 7.0 詳細については、 、「IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0」を参照してください。

ダイジェスト

ダイジェスト認証は基本認証と似ていますが、資格情報をクリア テキストではなくハッシュとして送信できるという利点があります。IIS 6.0 詳細については、 、「Digest Authentication in IIS 6.0」を参照してください。IIS 7.0 詳細については、 、「IIS 7.0 Beta: Configure Digest Authentication」を参照してください。

Windows

これは、IIS の統合 Windows 認証に対応しています。この値に設定する場合、サーバーは、Kerberos プロトコルを使用する Windows ドメインにドメイン コントローラとして存在することにもなっています。サーバーが Kerberos ベースのドメインに存在しない場合、または Kerberos システムに障害が発生した場合は、次のセクションで説明する NTLM (NT LAN Manager) 値を使用できます。IIS 6.0 詳細については、 、「Integrated Windows Authentication in IIS 6.0」を参照してください。IIS 7.0 詳細については、 、「IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0」を参照してください。

NTLM

この値を使用すると、Kerberos が失敗した場合に、サーバーは、NTLM を使用して認証を実行できます。IIS 6.0 における IIS の構成詳細については、 、「Forcing NTLM Authentication」を参照してください。IIS 7.0 では、Windows 認証に NTLM 認証が含まれます。詳細な情報については、次のページを参照してください。 「IIS 7.0 Beta: Configuring Server Certificates in IIS 7.0」を参照してください。

WsHttpBinding

WSHttpBinding クラスは、WS-* 仕様を実装するサービスと共に相互運用するようにデザインされています。このバインディングのトランスポート セキュリティは、SSL (Secure Sockets Layer) over HTTP、または HTTPS です。SSL を使用する WCF アプリケーションを作成するには、IIS を使用してアプリケーションをホストします。自己ホスト型アプリケーションを作成する場合は、HttpCfg.exe ツールを使用して、X.509 証明書をコンピュータの特定のポートにバインドします。ポート番号は、エンドポイント アドレスとして WCF アプリケーションの一部に指定されます。トランスポート モードを使用する場合は、エンドポイント アドレスに HTTPS プロトコルを含める必要があります。そうしないと、実行時に例外が発生します。詳細な情報については、次のページを参照してください。 「HTTP トランスポート セキュリティ」を参照してください。

クライアント認証の場合、HttpTransportSecurity クラスの ClientCredentialType プロパティを HttpClientCredentialType 列挙値のいずれかに設定します。この列挙値は、BasicHttpBinding のクライアント資格情報の種類と同一であり、IIS サービスを使用してホストされるようにデザインされています。

クライアント資格情報の種類が Windows の場合に使用するバインディングの例を次に示します。

WSDualHttpBinding

このバインディングが提供するのは、トランスポート レベルのセキュリティではなく、メッセージ レベルのセキュリティだけです。

NetTcpBinding

NetTcpBinding クラスは、メッセージ トランスポートに TCP を使用します。トランスポート モードのセキュリティは、TLS (Transport Layer Security) over TCP を実装することによって実現されます。TLS 実装は、オペレーティング システムによって提供されます。

次のコードに示すように、TcpTransportSecurity クラスの ClientCredentialType プロパティを TcpClientCredentialType 値のいずれかに設定することで、クライアントの資格情報の種類を指定することもできます。

クライアント側

クライアントでは、X509CertificateInitiatorClientCredential クラスの SetCertificate メソッドを使用して証明書を指定する必要があります。

ms729700.note(ja-jp,VS.90).gifメモ :
Windows セキュリティを使用している場合には、証明書は不要です。

証明書のサムプリントを使用するコードを次に示します。サムプリントにより、証明書が一意に識別されます。証明書詳細については、 、「証明書の使用」を参照してください。

次のように、behaviors セクションで clientCredentials elementを使用して、クライアントの構成に証明書を指定することもできます。

<behaviors>
  <behavior>
   <clientCredentials>
     <clientCertificate findValue= "101010101010101010101010101010000000000" 
      storeLocation="LocalMachine" storeName="My" 
      X509FindType="FindByThumbPrint"/>
     </clientCertificate>
   </clientCredentials>
 </behavior>
</behaviors>  

NetNamedPipeBinding

同じネットワーク上の 2 台のコンピュータ間に名前付きパイプ チャネルを作成できますが、NetNamedPipeBinding クラスは、コンピュータ内通信 (つまり、同じコンピュータ上で実行されるプロセス) を効率的に行うことができるようにデザインされています。このバインディングが提供するのは、トランスポート レベルのセキュリティだけです。このバインディングを使用してアプリケーションを作成する場合は、エンドポイント アドレスにプロトコルとして "net.pipe" を含める必要があります。

WSFederationHttpBinding

トランスポート セキュリティを使用する場合、このバインディングでは SSL over HTTP を使用します。SSL over HTTP は HTTPS とも呼ばれ、発行済みトークン (TransportWithMessageCredential) を含みます。フェデレーション アプリケーション詳細については、 、「フェデレーションと発行済みトークン」を参照してください。

NetPeerTcpBinding

NetPeerTcpBinding クラスは、ピアツーピア ネットワーク機能を使用して効率的に通信できるようにデザインされた、セキュリティ保護されたトランスポートです。クラスとバインディングの名前が示すように、プロトコルは TCP です。セキュリティ モードが Transport に設定されている場合、このバインディングは TLS over TCP を実装します。ピアツーピア機能詳細については、 、「ピアツーピア ネットワーク」を参照してください。

MsmqIntegrationBinding と NetMsmqBinding

メッセージ キュー (以前は MSMQ と呼ばれていました) の詳細については、「トランスポート セキュリティを使用したメッセージのセキュリティ保護」を参照してください。

関連項目

概念

WCF セキュリティのプログラミング