次の方法で共有


SecurityBindingElement 認証モード

Windows Communication Foundation (WCF) では、クライアントとサービスが相互に認証するためのモードがいくつか用意されています。 SecurityBindingElement クラスの静的メソッドまたは構成を使用して、この認証モード用のセキュリティ バインド要素を作成できます。 このトピックでは、18 の認証モードについて簡単に説明します。

認証モードの 1 つに要素を使用する例については、「方法 : 指定した認証モード用の SecurityBindingElement を作成する」を参照してください。

基本的な構成プログラミング

構成ファイルで認証モードを設定する手順を次に示します。

構成で認証モードを設定するには

  1. <bindings> 要素に <customBinding> を追加します。

  2. 子要素として、<binding> 要素を <customBinding> 要素に追加します。

  3. <security> 要素を <binding> 要素に追加します。

  4. authenticationMode 属性を、以下で説明する値のいずれかに設定します。 たとえば、次のコードによりモードは AnonymousForCertificate に設定されます。

    <bindings>
      <customBinding>
        <binding name="SecureCustomBinding">
         <security authenticationMode ="AnonymousForCertificate" />
        </binding>
      </customBinding>
    </bindings>
    

プログラムでモードを設定するには

  1. 戻り値の型を決めます。SymmetricSecurityBindingElementTransportSecurityBindingElementAsymmetricSecurityBindingElement、または SecurityBindingElement のいずれかを指定できます。

  2. SecurityBindingElement クラスの適切な静的メソッドを呼び出します。 たとえば、次のコードは CreateAnonymousForCertificateBindingElement メソッドを呼び出します。

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. カスタム バインドを作成するにはバインド要素を使用します。 詳しくは、「カスタム バインディング」をご覧ください。

モードの説明

AnonymousForCertificate

この認証モードでは、クライアントは匿名になり、X.509 証明書を使用してサービスが認証されます。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateAnonymousForCertificateBindingElement です。 または、<security> 要素の authenticationMode 属性を AnonymousForCertificate に設定します。

AnonymousForSslNegotiated

この認証モードでは、クライアントが匿名になり、実行時にネゴシエートされる X.509 証明書を使用してサービスが認証されます。 セキュリティ バインド要素は、最初のパラメーターに SymmetricSecurityBindingElement の値が渡される場合に CreateSslNegotiationBindingElement メソッドによって返される false です。 代わりに、authenticationMode 属性に AnonymousForSslNegotiated を設定します。

CertificateOverTransport

この認証モードでは、クライアントは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示される X.509 証明書を使用して認証を行います。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、TransportSecurityBindingElement メソッドによって返される CreateCertificateOverTransportBindingElement です。 代わりに、authenticationMode 属性に CertificateOverTransport を設定します。

IssuedToken

この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。 サービスはクライアントに対して認証されませんが、そのサービスだけがキーを復号化できるように、セキュリティ トークン サービスは発行されたトークンの一部として共有キーを暗号化します。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateIssuedTokenBindingElement です。 代わりに、authenticationMode 属性に IssuedToken を設定します。

IssuedTokenForCertificate

この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。 発行済みトークンは、保証サポート トークンまたは所有者トークン (メッセージ署名を行うトークン) として SOAP 層に表示されます。 X.509 証明書を使用したクライアントに対するサービス認証。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateIssuedTokenForCertificateBindingElement です。 代わりに、authenticationMode 属性に IssuedTokenForCertificate を設定します。

IssuedTokenForSslNegotiated

この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。 発行済みトークンは、保証サポート トークンまたは所有者トークン (メッセージ署名を行うトークン) として SOAP 層に表示されます。 サービスは X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateIssuedTokenForSslBindingElement です。 代わりに、authenticationMode 属性に IssuedTokenForSslNegotiated を設定します。

IssuedTokenOverTransport

この認証モードでは、クライアントはサービスに対する認証を行いません。代わりに、クライアントはセキュリティ トークン サービスに対して認証を行い、SAML トークンを受信します。その後、クライアントはサーバーに対してこのトークンを提示し、共有キーの情報を示します。 発行済みトークンは、保証サポート トークンまたは所有者トークン (メッセージ署名を行うトークン) として SOAP 層に表示されます。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、TransportSecurityBindingElement メソッドによって返される CreateIssuedTokenOverTransportBindingElement です。 代わりに、authenticationMode 属性に IssuedTokenOverTransport を設定します。

Kerberos

この認証モードでは、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。 また、その同じチケットによってサーバーが認証されます。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateKerberosBindingElement です。 代わりに、authenticationMode 属性に Kerberos を設定します。

Note

この認証モードを使用するには、サービス アカウントをサービス プリンシパル名 (SPN: Service Principal Name) に関連付ける必要があります。 この関連付けを行うには、NETWORK SERVICE アカウントまたは LOCAL SYSTEM アカウントでサービスを実行します。 または、SetSpn.exe ツールを使用して、サービス アカウントの SPN を作成します。 どちらの場合にも、クライアントは <servicePrincipalName> 要素内で、または EndpointAddress コンストラクターを使用して、正しい SPN を使用する必要があります。 詳細については、「サービス ID と認証」を参照してください。

Note

Kerberos 認証モードを使用する場合、Anonymous および Delegation の各偽装レベルはサポートされません。

KerberosOverTransport

この認証モードでは、クライアントは Kerberos チケットを使用してサービスに対する認証を行います。 Kerberos トークンは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示されます。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、TransportSecurityBindingElement メソッドによって返される CreateKerberosOverTransportBindingElement です。 代わりに、authenticationMode 属性に KerberosOverTransport を設定します。

Note

この認証モードを使用するには、サービス アカウントを SPN に関連付ける必要があります。 この関連付けを行うには、NETWORK SERVICE アカウントまたは LOCAL SYSTEM アカウントでサービスを実行します。 または、SetSpn.exe ツールを使用して、サービス アカウントの SPN を作成します。 どちらの場合にも、クライアントは <servicePrincipalName> 要素内で、または EndpointAddress コンストラクターを使用して、正しい SPN を使用する必要があります。 詳細については、「サービス ID と認証」を参照してください。

MutualCertificate

この認証モードでは、クライアントは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示される X.509 証明書を使用して認証を行います。 また、サービスは X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateMutualCertificateBindingElement です。 代わりに、authenticationMode 属性に MutualCertificate を設定します。

MutualCertificateDuplex

この認証モードでは、クライアントは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示される X.509 証明書を使用して認証を行います。 また、サービスは X.509 証明書を使用して認証されます。 バインディングは、AsymmetricSecurityBindingElement メソッドによって返される CreateMutualCertificateDuplexBindingElement です。 代わりに、authenticationMode 属性に MutualCertificateDuplex を設定します。

MutualSslNegotiated

この認証モードでは、クライアントとサービスは X.509 証明書を使用して認証を行います。 セキュリティ バインド要素は、最初のパラメーターに SymmetricSecurityBindingElement の値が渡される場合に CreateSslNegotiationBindingElement メソッドによって返される true です。 代わりに、authenticationMode 属性に MutualSslNegotiated を設定します。

SecureConversation

セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateSecureConversationBindingElement です。 このメソッドは、パラメーターとして SecurityBindingElement を受け取り、初期化時にこれを使用してセキュリティで保護されたセッションを確立します。 代わりに、authenticationMode 属性に SecureConversation を設定します。

ブートストラップ バインディングを指定していない場合は、ブートストラップのために SspiNegotiated 認証モードが使用されます。

SspiNegotiation

この認証モードでは、ネゴシエーション プロトコルを使用して、クライアントとサーバーの認証を行います。 Kerberos を使用できる場合は Kerberos が使用され、それ以外の場合は、NTLM (NT LanMan) が使用されます。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateSspiNegotiationBindingElement です。 代わりに、authenticationMode 属性に SspiNegotiated を設定します。

SspiNegotiatedOverTransport

この認証モードでは、ネゴシエーション プロトコルを使用して、クライアントとサーバーの認証を行います。 Kerberos プロトコルを使用できる場合は Kerberos プロトコルが使用され、それ以外の場合は NTLM が使用されます。 発行されたトークンは、保証サポート トークン、つまりメッセージ署名を行うトークンとして SOAP 層に表示されます。 サービスは、トランスポート層で X.509 証明書により追加的に認証されます。 セキュリティ バインド要素は、TransportSecurityBindingElement メソッドによって返される CreateSspiNegotiationOverTransportBindingElement です。 代わりに、authenticationMode 属性に SspiNegotiatedOverTransport を設定します。

UserNameForCertificate

この認証モードでは、クライアントは、署名付きサポート トークン、つまりメッセージ署名で署名されたトークンとして SOAP 層に表示されるユーザー名トークンを使用してサービスに対する認証を行います。 X.509 証明書を使用したクライアントに対するサービス認証。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateUserNameForCertificateBindingElement です。 代わりに、authenticationMode 属性に UserNameForCertificate を設定します。

UserNameForCertificate 認証モードでは、クライアントとサービスの両方が WS-Security 1.1 を使用している必要があります。

UserNameForSslNegotiated

この認証モードでは、クライアントは、署名付きサポート トークン、つまりメッセージ署名で署名されたトークンとして SOAP 層に表示されるユーザー名トークンを使用して認証を行います。 サービスは X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、SymmetricSecurityBindingElement メソッドによって返される CreateUserNameForSslBindingElement です。 代わりに、authenticationMode 属性に UserNameForSslNegotiated を設定します。

UserNameOverTransport

この認証モードでは、クライアントは、署名付きサポート トークン、つまりメッセージ署名で署名されたトークンとして SOAP 層に表示されるユーザー名トークンを使用して認証を行います。 サービスはトランスポート層で X.509 証明書を使用して認証されます。 セキュリティ バインド要素は、TransportSecurityBindingElement メソッドによって返される CreateUserNameOverTransportBindingElement です。 代わりに、authenticationMode 属性に UserNameOverTransport を設定します。

関連項目