<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