<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 类确定。这些算法映射到安全策略语言 (WS-SecurityPolicy) 规范中指定的算法。 以下显示了可能的值。默认值为 Basic128。 此属性与选取不同于默认算法的算法集的其他平台一起使用。在对此设置进行修改时,应该注意相关算法的优缺点。此属性的类型为 SecurityAlgorithmSuite。默认值为 Aes256。 |
includeTimestamp |
一个布尔值,指定是否每个消息都包含时间戳。默认值为 true。 |
keyEntropyMode |
指定用于保护消息的密钥的计算方法。密钥只能基于客户端密钥材料、服务密钥材料或两者的组合。有效值为
默认值为 CombinedEntropy。 此属性的类型为 SecurityKeyEntropyMode。 |
messageProtectionOrder |
设置对消息应用消息级安全算法的顺序。包括以下有效值:
默认值为 SignBeforeEncrypt。 此属性的类型为 MessageProtectionOrder。 |
messageSecurityVersion |
可选。设置所使用的 WS-Security 的版本。包括以下有效值:
默认值是 WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11,且该默认值在 XML 中可以简单地表示为 Default。此属性的类型为 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 协议和 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