SecurityBindingElement 身份验证模式
Windows Communication Foundation (WCF) 提供了几种供客户端和服务互相进行身份验证的模式。 你可以通过使用 SecurityBindingElement 类上的静态方法或通过配置为这些身份验证模式创建安全绑定元素。 本主题简要说明 18 种身份验证模式。
有关将元素用于其中一种身份验证模式的示例,请参阅如何:为指定的身份验证模式创建 SecurityBindingElement。
基本配置编程
下面的过程说明如何在配置文件中设置身份验证模式。
在配置中设置身份验证模式
将 <customBinding> 添加到 <bindings> 元素中。
将 <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
在此身份验证模式中,客户端使用 X.509 证书进行身份验证,此证书作为认可的支持令牌(即签署消息签名的令牌)显示在 SOAP 层上。 在传输层,服务是用 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
。
备注
若要使用此身份验证模式,服务帐户必须与服务主体名称 (SPN) 关联。 为此,请在 NETWORK SERVICE 帐户或 LOCAL SYSTEM 帐户下运行服务。 也可以使用 SetSpn.exe 工具为服务帐户创建一个 SPN。 不论何种情况,客户端都必须在 <servicePrincipalName> 元素中使用正确的 SPN,或者通过使用 EndpointAddress 构造函数来应用正确的 SPN。 有关详细信息,请参阅服务标识和身份验证。
备注
当使用 Kerberos
身份验证模式时,不支持 Anonymous 和 Delegation 模拟级别。
KerberosOverTransport
在此身份验证模式下,客户端使用 Kerberos 票证向服务进行身份验证。 Kerberos 令牌作为认可的支持令牌(即签署消息签名的令牌)显示在 SOAP 层上。 在传输层,服务是用 X.509 证书进行身份验证的。 安全绑定元素是由 TransportSecurityBindingElement
方法返回的 CreateKerberosOverTransportBindingElement。 或者,将 authenticationMode
属性设置为 KerberosOverTransport
。
备注
若要使用此身份验证模式,服务帐户必须与 SPN 关联。 为此,请在 NETWORK SERVICE 帐户或 LOCAL SYSTEM 帐户下运行服务。 也可以使用 SetSpn.exe 工具为服务帐户创建一个 SPN。 不论何种情况,客户端都必须在 <servicePrincipalName> 元素中使用正确的 SPN,或者通过使用 EndpointAddress 构造函数来应用正确的 SPN。 有关详细信息,请参阅服务标识和身份验证。
MutualCertificate
在此身份验证模式中,客户端使用 X.509 证书进行身份验证,此证书作为认可的支持令牌(即签署消息签名的令牌)显示在 SOAP 层上。 同样使用 X.509 证书对服务进行身份验证。 安全绑定元素是由 SymmetricSecurityBindingElement
方法返回的 CreateMutualCertificateBindingElement。 或者,将 authenticationMode
属性设置为 MutualCertificate
。
MutualCertificateDuplex
在此身份验证模式中,客户端使用 X.509 证书进行身份验证,此证书作为认可的支持令牌(即签署消息签名的令牌)显示在 SOAP 层上。 同样使用 X.509 证书对服务进行身份验证。 此绑定是由 AsymmetricSecurityBindingElement
方法返回的 CreateMutualCertificateDuplexBindingElement。 或者,将 authenticationMode
属性设置为 MutualCertificateDuplex
。
MutualSslNegotiated
在此身份验证模式中,客户端和服务都使用 X.509 证书进行身份验证。 安全绑定元素是在为第一个参数传递 SymmetricSecurityBindingElement
值时由 CreateSslNegotiationBindingElement 方法返回的 true
。 或者,将 authenticationMode
属性设置为 MutualSslNegotiated
。
SecureConversation
安全绑定元素是由 SymmetricSecurityBindingElement
方法返回的 CreateSecureConversationBindingElement。 此方法将 SecurityBindingElement 作为一个参数,在初始化过程中使用该参数建立安全会话。 或者,将 authenticationMode
属性设置为 SecureConversation
。
如果未指定启动绑定,则会对启动使用 SspiNegotiated
身份验证模式。
SspiNegotiation
在此身份验证模式中,使用协商协议来执行客户端和服务器身份验证。 可能时使用 Kerberos;否则使用 NT LanMan (NTLM)。 安全绑定元素是由 SymmetricSecurityBindingElement
方法返回的 CreateSspiNegotiationBindingElement。 或者,将 authenticationMode
属性设置为 SspiNegotiated
。
SspiNegotiatedOverTransport
在此身份验证模式中,使用协商协议来执行客户端和服务器身份验证。 可能时使用 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
。