SecurityBindingElement 驗證模式
Windows Communication Foundation (WCF) 提供數個模式,可讓用戶端和服務用來相互驗證。 您可以在 SecurityBindingElement 類別上使用靜態方法或透過組態,建立這些驗證模式的安全性繫結項目。 本主題會簡短說明這 18 種驗證模式。
如需針對其中一種驗證模式使用元素的範例,請參閱如何:為指定的驗證模式建立 SecurityBindingElement (機器翻譯)。
基本組態程式設計
下列程序會說明如何使用組態檔來設定驗證模式。
使用組態來設定驗證模式
在 <bindings> 元素中,新增 <customBinding>。
作為子元素,將 <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
在此驗證模式中,用戶端會使用出現在 SOAP 層中當做簽署支援權杖 (也就是簽署訊息簽章的權杖) 的 X.509 憑證來進行驗證。 服務會在傳輸層上使用 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 建構函式。 如需詳細資訊,請參閱服務識別和驗證 (機器翻譯)。
注意
當使用 Kerberos
驗證模式時,就不會支援 Anonymous 與 Delegation 模擬等級。
KerberosOverTransport
在此驗證模式中,用戶端會使用 Kerberos 票證向服務進行驗證。 Kerberos 權杖會當做簽署支援權杖 (也就是簽署訊息簽章的權杖) 出現在 SOAP 層中。 服務會在傳輸層上使用 X.509 憑證來進行驗證。 安全性繫結項目是由 TransportSecurityBindingElement
方法傳回的 CreateKerberosOverTransportBindingElement。 或者,可以將 authenticationMode
屬性設定為 KerberosOverTransport
。
注意
為了使用此驗證模式,服務帳戶必須與某個 SPN 相關聯。 如果要這樣做,請以 NETWORK SERVICE 帳戶或 LOCAL SYSTEM 帳戶執行此服務。 或者,使用 SetSpn.exe 工具來建立服務帳戶的 SPN。 不論是何種情況,用戶端都必須在 <servicePrincipalName> 元素中使用正確的 SPN,或是使用 EndpointAddress 建構函式。 如需詳細資訊,請參閱服務識別和驗證 (機器翻譯)。
MutualCertificate
在此驗證模式中,用戶端會使用出現在 SOAP 層中當做簽署支援權杖 (也就是簽署訊息簽章的權杖) 的 X.509 憑證來進行驗證。 服務也會使用 X.509 憑證來進行驗證。 安全性繫結項目是由 SymmetricSecurityBindingElement
方法傳回的 CreateMutualCertificateBindingElement。 或者,可以將 authenticationMode
屬性設定為 MutualCertificate
。
MutualCertificateDuplex
在此驗證模式中,用戶端會使用出現在 SOAP 層中當做簽署支援權杖 (也就是簽署訊息簽章的權杖) 的 X.509 憑證來進行驗證。 服務也會使用 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
。