SecurityBindingElement 驗證模式

Windows Communication Foundation (WCF) 提供數個模式,可讓用戶端和服務用來相互驗證。 您可以在 SecurityBindingElement 類別上使用靜態方法或透過組態,建立這些驗證模式的安全性繫結項目。 本主題會簡短說明這 18 種驗證模式。

如需針對其中一種驗證模式使用元素的範例,請參閱如何:為指定的驗證模式建立 SecurityBindingElement (機器翻譯)

基本組態程式設計

下列程序會說明如何使用組態檔來設定驗證模式。

使用組態來設定驗證模式

  1. <bindings> 元素中,新增 <customBinding>

  2. 作為子元素,將 <binding> 元素新增至 <customBinding> 元素。

  3. <security> 項目加入至 <binding> 項目。

  4. authenticationMode 屬性設定為下列其中一個描述值。 例如,下列程式碼會將此模式設定為 AnonymousForCertificate

    <bindings>  
      <customBinding>  
        <binding name="SecureCustomBinding">  
         <security authenticationMode ="AnonymousForCertificate" />  
        </binding>  
      </customBinding>  
    </bindings>  
    

以程式設計方式來設定模式

  1. 判斷傳回型別,該型別可能是下列其中一種型別:SymmetricSecurityBindingElementTransportSecurityBindingElementAsymmetricSecurityBindingElementSecurityBindingElement

  2. 呼叫 SecurityBindingElement 類別的適當靜態方法。 例如,下列程式碼會呼叫 CreateAnonymousForCertificateBindingElement 方法。

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. 使用繫結項目來建立自訂繫結。 如需詳細資訊,請參閱自訂繫結 (機器翻譯)

模式描述

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 驗證模式時,就不會支援 AnonymousDelegation 模擬等級。

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

另請參閱