<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 |
選擇項,布林值,指定序列化權杖是否可以用在回覆上。預設值為 false。使用雙重繫結時,設定將預設為 true,並忽略所做的任何設定。 |
authenticationMode |
選擇項。指定啟動器和回應程式之間使用的驗證模式。所有值如下所示。 預設為 sspiNegotiated。 |
defaultAlgorithmSuite |
選擇項,設定訊息加密和金鑰包裝演算法。這些演算法和金鑰大小是由 SecurityAlgorithmSuite 類別所決定。這些演算法會對應至安全性原則語言 (WS-SecurityPolicy) 規格中指定的演算法。 可能的值如下所示。預設值為 Basic256。 當使用另一個平台,且該平台選擇一組和預設值不同的演算法時,則使用這個屬性。在修改這個設定時,您應該了解相關演算法的優點和缺點。此屬性的型別為 SecurityAlgorithmSuite。 |
includeTimestamp |
布林值,指定每個訊息是否包含時間戳記。預設為 true。 |
keyEntropyMode |
指定保護訊息安全之金鑰的計算方法。金鑰可僅根據用戶端金鑰資料、僅根據服務金鑰資料,或兩者的組合。有效值為
預設為 CombinedEntropy。 此屬性的型別為 SecurityKeyEntropyMode。 |
messageProtectionOrder |
設定順序,訊息層級安全性演算法會以這個順序套用至訊息。有效值包括以下的值:
預設值取決於所使用的 WS-Security 版本。使用 WS-Security 1.1 時,預設值為 SignBeforeEncryptAndEncryptSignature。使用 WS-Security 1.0 時,預設值為 SignBeforeEncrypt。 此屬性的型別為 MessageProtectionOrder。 |
messageSecurityVersion |
選擇項。設定使用的 WS-Security 版本。有效值包括以下的值:
預設值為 WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11,而且可以使用 XML 格式單純表示為 Default。此屬性的型別為 MessageSecurityVersion。 |
requireDerivedKeys |
布林值,指定是否可以從原始的證明金鑰衍生金鑰。預設為 true。 |
requireSecurityContextCancellation |
選擇項,布林值,指定當不再需要安全性內容時是否應取消及終止它。預設為 true。 |
requireSignatureConfirmation |
選擇項,布林值,指定是否啟用 WS-Security 簽章確認。設定為 true 時,回應程式會確認訊息簽章。當您針對相互憑證設定自訂繫結或將它設定為使用已發行的權杖 (WSS 1.1 繫結) 時,此屬性預設為 true。否則,預設值為 false。 簽章確認是用來確認服務的回應完全感知要求。 |
securityHeaderLayout |
選擇項,指定安全性標頭中的項目順序。有效值為
預設為 Strict。 此項目的型別為 SecurityHeaderLayout。 |
項目子系
項目 | 描述 |
---|---|
指定目前發行的權杖。此項目的型別為 IssuedTokenParametersElement。 |
|
指定此繫結之本機用戶端的安全性設定。此項目的型別為 LocalClientSecuritySettingsElement。 |
|
指定此繫結之本機服務的安全性設定。此項目的型別為 LocalServiceSecuritySettingsElement。 |
|
指定用於初始化安全對話服務的預設值。 |
父項目
項目 | 描述 |
---|---|
定義自訂繫結的所有繫結功能。 |
備註
如需詳細資訊使用這個項目的詳細資訊,請參閱 SecurityBindingElement Authentication Modes和 How To: Create a Custom Binding Using the SecurityBindingElement。
範例
下列範例示範如何使用自訂繫結設定安全性。它會顯示如何使用自訂繫結同時啟用訊息層級安全性和安全傳輸。當在用戶端和服務之間傳輸訊息需要安全傳輸,且同時必須保護訊息層級上訊息的安全時,這是相當有用的。系統提供的繫結不支援這個組態。
服務組態定義的自訂繫結,使用 TLS/SSL 通訊協定和 Windows 訊息安全性,支援受保護的 TCP 通訊。自訂繫結使用服務憑證來驗證傳輸層級上的服務,並在用戶端和服務之間進行傳輸時保護訊息。這是由 <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