SecurityBindingElement 認証モード
Windows Communication Foundation (WCF) では、クライアントとサービスが相互に認証するためのモードがいくつか用意されています。 SecurityBindingElement クラスの静的メソッドまたは構成を使用して、この認証モード用のセキュリティ バインド要素を作成できます。 このトピックでは、18 の認証モードについて簡単に説明します。
認証モードの 1 つに要素を使用する例については、「方法 : 指定した認証モード用の SecurityBindingElement を作成する」を参照してください。
基本的な構成プログラミング
構成ファイルで認証モードを設定する手順を次に示します。
構成で認証モードを設定するには
<bindings> 要素に <customBinding> を追加します。
子要素として、<binding> 要素を
<customBinding>
要素に追加します。<security>
要素を<binding>
要素に追加します。authenticationMode
属性を、以下で説明する値のいずれかに設定します。 たとえば、次のコードによりモードはAnonymousForCertificate
に設定されます。<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
プログラムでモードを設定するには
戻り値の型を決めます。SymmetricSecurityBindingElement、TransportSecurityBindingElement、AsymmetricSecurityBindingElement、または SecurityBindingElement のいずれかを指定できます。
SecurityBindingElement クラスの適切な静的メソッドを呼び出します。 たとえば、次のコードは CreateAnonymousForCertificateBindingElement メソッドを呼び出します。
SymmetricSecurityBindingElement b = SecurityBindingElement. CreateAnonymousForCertificateBindingElement();
Dim b As SymmetricSecurityBindingElement = _ SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
カスタム バインドを作成するにはバインド要素を使用します。 詳しくは、「カスタム バインディング」をご覧ください。
モードの説明
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
を設定します。