<customBinding> の <security>
カスタム バインディングのセキュリティ オプションを指定します。
<system.serviceModel>
<bindings>
<customBinding>
<binding>
<customBinding> の <security>
<security
allowSerializedSigningTokenOnReply="Boolean"
authenticationMode="AuthenticationMode"
defaultAlgorithmSuite="SecurityAlgorithmSuite"
includeTimestamp="Boolean"
requireDerivedKeys="Boolean"
keyEntropyMode="ClientEntropy/ServerEntropy/CombinedEntropy"
messageProtectionOrder="SignBeforeEncrypt/SignBeforeEncryptAndEncryptSignature/EncryptBeforeSign"
messageSecurityVersion="WSSecurityJan2004/WSSecurityXXX2005"
requireDerivedKeys="Boolean"
requireSecurityContextCancellation="Boolean"
requireSignatureConfirmation="Boolean"
securityHeaderLayout=
"Strict/Lax/LaxTimestampFirst/LaxTimestampLast"
includeTimestamp="Boolean">
<issuedTokenParameters />
<localClientSettings />
<localServiceSettings />
<secureConversationBootstrap />
</security>
属性および要素
属性
属性 | 説明 |
---|---|
allowSerializedSigningTokenOnReply |
省略可能。シリアル化されたトークンを応答で使用できる場合に指定するブール値。 |
authenticationMode |
省略可能。イニシエータとレスポンダの間で使用される認証モードを指定します。すべての値については、以下を参照してください。 既定値は sspiNegotiated です。 |
defaultAlgorithmSuite |
省略可能。メッセージの暗号化とキー ラップ アルゴリズムを設定します。アルゴリズムとキー サイズは、SecurityAlgorithmSuite クラスにより決まります。これらのアルゴリズムは、Security Policy Language (WS-SecurityPolicy) の仕様で指定されているアルゴリズムに対応付けられています。 指定できる値を以下に示します。既定値は、Basic128 です。 この属性は、既定とは異なるアルゴリズムのセットを選択する別のプラットフォームで操作するときに使用されます。この設定を修正する場合、関連するアルゴリズムの強さと脆弱性に注意する必要があります。この属性は SecurityAlgorithmSuite 型です。既定値は Aes256 です。 |
includeTimestamp |
各メッセージにタイム スタンプが含まれるかどうかを指定するブール値です。既定値は true です。 |
keyEntropyMode |
メッセージをセキュリティで保護するキーを計算する方法を指定します。キーは、クライアント キー マテリアルのみ、サービス キー マテリアルのみ、または両方の組み合わせに基づいて生成できます。有効な値は、以下のとおりです。
既定値は CombinedEntropy です。 この属性は SecurityKeyEntropyMode 型です。 |
messageProtectionOrder |
メッセージ レベルのセキュリティ アルゴリズムをメッセージに適用する順序を設定します。有効な値は次のとおりです。
既定値は SignBeforeEncrypt です。 この属性は MessageProtectionOrder 型です。 |
messageSecurityVersion |
省略可能。使用される WS-Security のバージョンを設定します。有効な値は次のとおりです。
既定は、WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 であり、単純に Default として XML で表現できます。この属性は MessageSecurityVersion 型です。 |
requireDerivedKeys |
キーを元の証明キーから派生できる場合に指定するブール値。既定のクラスは true です。 |
requireSecurityContextCancellation |
省略可能。セキュリティ コンテキストが不要になったときにそれをキャンセルして終了する必要がある場合に指定するブール値。既定のクラスは true です。 |
requireSignatureConfirmation |
省略可能。WS-Security 署名確認を有効にするかどうかを指定するブール値です。true に設定されている場合、メッセージ署名が応答側で確認されます。既定値は false です。 サービスが要求を完全に認識して応答していることを確認するために、署名確認を使用します。 |
securityHeaderLayout |
省略可能。セキュリティ ヘッダーでの要素の順序を指定します。有効な値は、以下のとおりです。
既定値は Strict です。 この要素は SecurityHeaderLayout 型です。 |
子要素
要素 | 説明 |
---|---|
現在発行されているトークンを指定します。この要素は IssuedTokenParametersElement 型です。 |
|
このバインディングのローカル クライアントのセキュリティ設定を指定します。この要素は LocalClientSecuritySettingsElement 型です。 |
|
このバインディングのローカル サービスのセキュリティ設定を指定します。この要素は LocalServiceSecuritySettingsElement 型です。 |
|
セキュリティで保護されたメッセージ交換サービスの開始に使用される既定値を指定します。 |
親要素
要素 | 説明 |
---|---|
カスタム バインディングのすべてのバインディング機能を定義します。 |
解説
この要素の使い方詳細については、 、「SecurityBindingElement Authentication Modes」および「How To: Create a Custom Binding Using the SecurityBindingElement」を参照してください。
例
次の例では、カスタム バインディングを使用してセキュリティを構成する方法を示します。カスタム バインディングを使用して、セキュリティで保護されたトランスポートと共にメッセージ レベルのセキュリティを有効にする方法を示します。これは、クライアントとサービス間でメッセージを転送する際にセキュリティで保護されたトランスポートが必要であると同時に、そのメッセージをメッセージ レベルでセキュリティ保護する必要がある場合に便利です。この構成は、システム指定のバインディングではサポートされていません。
サービス構成では、TLS/SSL プロトコルを使用して保護される TCP 通信、および Windows メッセージ セキュリティをサポートするカスタム バインディングが定義されます。カスタム バインディングはサービス証明書を使用して、トランスポート レベルでサービスを認証し、クライアントとサービス間で転送中のメッセージを保護します。これは <sslStreamSecurity> バインディング要素によって実現されます。サービスの証明書は、サービス動作を使用して構成されます。
さらに、カスタム バインディングは Windows 資格情報の種類 (既定の資格情報の種類) によるメッセージ セキュリティを使用します。これは <customBinding> の <security> バインディング要素によって実現されます。Kerberos 認証機構が利用できる場合は、クライアントとサービスはどちらもメッセージ レベルのセキュリティを使用して認証されます。Kerberos 認証機構が利用できない場合は、NTLM 認証が使用されます。NTLM はサービスに対してクライアントを認証しますが、クライアントに対するサービスの認証は行いません。<customBinding> の <security> バインディング要素は SecureConversation authenticationType を使用するように構成されます。この結果、クライアントとサービスの両方でセキュリティ セッションが作成されます。これは、サービスの双方向コントラクトを動作させるために必要です。この例の実行の詳細については、「Custom Binding Security」を参照してください。
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<!-- use following base address -->
<add baseAddress="net.tcp://localhost:8000/ServiceModelSamples/Service"/>
</baseAddresses>
</host>
<endpoint address=""
binding="customBinding"
bindingConfiguration="Binding1"
contract="Microsoft.ServiceModel.Samples.ICalculatorDuplex" />
<!-- the mex endpoint is exposed at net.tcp://localhost:8000/ServiceModelSamples/service/mex -->
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<!-- configure a custom binding -->
<customBinding>
<binding name="Binding1">
<security authenticationMode="SecureConversation"
requireSecurityContextCancellation="true">
</security>
<textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8"/>
<sslStreamSecurity requireClientCertificate="false"/>
<tcpTransport/>
</binding>
</customBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="False" />
<serviceCredentials>
<serviceCertificate findValue="localhost" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
関連項目
リファレンス
<customBinding>
SecurityElement
SecurityBindingElement
CustomBinding
その他の技術情報
Windows Communication Foundation Bindings
Extending Bindings
Custom Bindings
How To: Create a Custom Binding Using the SecurityBindingElement
Custom Binding Security