Tryby uwierzytelniania elementu SecurityBindingElementSecurityBindingElement Authentication Modes

Windows Communication Foundation (WCF) oferuje kilka trybów, za pomocą których klienci i usługi mogą się wzajemnie uwierzytelniać.Windows Communication Foundation (WCF) provides several modes by which clients and services authenticate to one another. Można utworzyć elementy powiązań zabezpieczeń dla tych trybów uwierzytelniania przy użyciu metod statycznych w SecurityBindingElement klasie lub przez konfigurację.You can create security binding elements for these authentication modes by using static methods on the SecurityBindingElement class or through configuration. W tym temacie krótko opisano 18 trybów uwierzytelniania.This topic briefly describes the 18 authentication modes.

Przykład korzystania z elementu dla jednego z trybów uwierzytelniania można znaleźć w temacie How to: Create a elementu SecurityBindingElement for a Authentication Mode for a.For an example of using the element for one of the authentication modes, see How to: Create a SecurityBindingElement for a Specified Authentication Mode.

Podstawowe programowanie konfiguracjiBasic Configuration Programming

Poniższa procedura opisuje sposób ustawiania trybu uwierzytelniania w pliku konfiguracji.The following procedure describes how to set the authentication mode in a configuration file.

Aby ustawić tryb uwierzytelniania w konfiguracjiTo set the authentication mode in configuration

  1. Do <bindings> elementu, Dodaj <customBinding> .To the <bindings> element, add a <customBinding>.

  2. Jako element podrzędny Dodaj <binding> element do <customBinding> elementu.As a child element, add a <binding> element to the <customBinding> element.

  3. Dodaj <security> element do <binding> elementu.Add a <security> element to the <binding> element.

  4. Ustaw authenticationMode atrybut na jedną z wartości opisanych poniżej.Set the authenticationMode attribute to one of the values described below. Na przykład poniższy kod ustawia tryb na AnonymousForCertificate .For example, the following code sets the mode to AnonymousForCertificate.

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

Aby programowo ustawić trybTo set the mode programmatically

  1. Określ zwracany typ, który może mieć jedną z następujących wartości: SymmetricSecurityBindingElement , TransportSecurityBindingElement , AsymmetricSecurityBindingElement , lub SecurityBindingElement .Determine the return type, which can be one of the following: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement, or SecurityBindingElement.

  2. Wywoływanie odpowiedniej statycznej metody SecurityBindingElement klasy.Call the appropriate static method of the SecurityBindingElement class. Na przykład poniższy kod wywołuje CreateAnonymousForCertificateBindingElement metodę.For example, the following code calls the CreateAnonymousForCertificateBindingElement method.

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. Użyj elementu Binding, aby utworzyć niestandardowe powiązanie.Use the binding element to create the custom binding. Aby uzyskać więcej informacji, zobacz niestandardowe powiązania.For more information, see Custom Bindings.

Opisy trybuMode Descriptions

AnonymousForCertificateAnonymousForCertificate

W przypadku tego trybu uwierzytelniania klient jest anonimowy i usługa jest uwierzytelniana przy użyciu certyfikatu X. 509.With this authentication mode, the client is anonymous and the service is authenticated using an X.509 certificate. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateAnonymousForCertificateBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateAnonymousForCertificateBindingElement method. Alternatywnie Ustaw authenticationMode atrybut <security elementu> na AnonymousForCertificate .Alternatively, set the authenticationMode attribute of the <security> element to AnonymousForCertificate.

AnonymousForSslNegotiatedAnonymousForSslNegotiated

W tym trybie uwierzytelniania klient jest anonimowy i usługa jest uwierzytelniana przy użyciu certyfikatu X. 509, który jest negocjowany w czasie wykonywania.With this authentication mode, the client is anonymous and the service is authenticated using an X.509 certificate that is negotiated at run time. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateSslNegotiationBindingElement metodę, gdy wartość false jest przekazana dla pierwszego parametru.The security binding element is a SymmetricSecurityBindingElement returned by the CreateSslNegotiationBindingElement method when a value of false is passed for the first parameter. Alternatywnie możesz ustawić authenticationMode atrybut na AnonymousForSslNegotiated .Alternatively, set the authenticationMode attribute to AnonymousForSslNegotiated.

CertificateOverTransportCertificateOverTransport

W tym trybie uwierzytelniania klient jest uwierzytelniany przy użyciu certyfikatu X. 509, który pojawia się na warstwie protokołu SOAP jako tokenu pomocniczego. oznacza to token, który podpisze komunikat.With this authentication mode, the client authenticates using an X.509 certificate that appears at the SOAP layer as an endorsing supporting token; that is, a token that signs the message signature. Usługa jest uwierzytelniana przy użyciu certyfikatu X. 509 w warstwie transportowej.The service is authenticated using an X.509 certificate at the transport layer. Element powiązania zabezpieczeń jest TransportSecurityBindingElement zwracany przez CreateCertificateOverTransportBindingElement metodę.The security binding element is a TransportSecurityBindingElement returned by the CreateCertificateOverTransportBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na CertificateOverTransport .Alternatively, set the authenticationMode attribute to CertificateOverTransport.

IssuedTokenIssuedToken

W przypadku tego trybu uwierzytelniania klient nie jest uwierzytelniany w usłudze w taki sposób; Zamiast tego klient jest uwierzytelniany w usłudze tokenu zabezpieczającego i odbiera token SAML, który następnie przedstawia serwer, aby udowodnić swoją wiedzę o kluczu współdzielonym.With this authentication mode, the client does not authenticate to the service, as such; instead, the client authenticates to a security token service and receives a SAML token, which it then presents to the server to prove its knowledge of a shared key. Usługa nie jest uwierzytelniana klientowi w taki sposób, że usługa tokenu zabezpieczającego szyfruje klucz współużytkowany jako część wystawionego tokenu, dzięki czemu tylko usługa może odszyfrować klucz.The service is not authenticated to the client, as such, but the security token service encrypts the shared key as part of the issued token so that only the service can decrypt the key. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateIssuedTokenBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateIssuedTokenBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na IssuedToken .Alternatively, set the authenticationMode attribute to IssuedToken.

IssuedTokenForCertificateIssuedTokenForCertificate

W przypadku tego trybu uwierzytelniania klient nie jest uwierzytelniany w usłudze w taki sposób; Zamiast tego klient jest uwierzytelniany w usłudze tokenu zabezpieczającego i odbiera token SAML, który następnie przedstawia serwer, aby udowodnić swoją wiedzę o kluczu współdzielonym.With this authentication mode, the client does not authenticate to the service, as such; instead, the client authenticates to a security token service and receives a SAML token, which it then presents to the server to prove its knowledge of a shared key. Wystawiony token jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy lub token okaziciela; oznacza to token, który podpisze komunikat.The issued token appears at the SOAP layer as either an endorsing supporting token or a bearer token; that is, a token that signs the message signature. Usługa jest uwierzytelniana na kliencie przy użyciu certyfikatu X. 509.The service authenticates to the client using an X.509 certificate. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateIssuedTokenForCertificateBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateIssuedTokenForCertificateBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na IssuedTokenForCertificate .Alternatively, set the authenticationMode attribute to IssuedTokenForCertificate.

IssuedTokenForSslNegotiatedIssuedTokenForSslNegotiated

W przypadku tego trybu uwierzytelniania klient nie jest uwierzytelniany w usłudze w taki sposób; Zamiast tego klient jest uwierzytelniany w usłudze tokenu zabezpieczającego i odbiera token SAML, który następnie przedstawia serwer, aby udowodnić swoją wiedzę o kluczu współdzielonym.With this authentication mode, the client does not authenticate to the service, as such; instead, the client authenticates to a security token service and receives a SAML token, which it then presents to the server to prove its knowledge of a shared key. Wystawiony token jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy lub token okaziciela; oznacza to token, który podpisze komunikat.The issued token appears at the SOAP layer as either an endorsing supporting token or a bearer token; that is, a token that signs the message signature. Usługa jest uwierzytelniana przy użyciu certyfikatu X. 509.The service is authenticated using an X.509 certificate. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateIssuedTokenForSslBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateIssuedTokenForSslBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na IssuedTokenForSslnegotiated .Alternatively, set the authenticationMode attribute to IssuedTokenForSslnegotiated.

IssuedTokenOverTransportIssuedTokenOverTransport

W przypadku tego trybu uwierzytelniania klient nie jest uwierzytelniany w usłudze w taki sposób; Zamiast tego klient jest uwierzytelniany w usłudze tokenu zabezpieczającego i odbiera token SAML, który następnie przedstawia serwer, aby udowodnić swoją wiedzę o kluczu współdzielonym.With this authentication mode, the client does not authenticate to the service, as such; instead, the client authenticates to a security token service and receives a SAML token, which it then presents to the server to prove its knowledge of a shared key. Wystawiony token jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy lub token okaziciela; oznacza to token, który podpisze komunikat.The issued token appears at the SOAP layer as either an endorsing supporting token or a bearer token; that is, a token that signs the message signature. Usługa jest uwierzytelniana przy użyciu certyfikatu X. 509 w warstwie transportowej.The service is authenticated using an X.509 certificate at the transport layer. Element powiązania zabezpieczeń jest TransportSecurityBindingElement zwracany przez CreateIssuedTokenOverTransportBindingElement metodę.The security binding element is a TransportSecurityBindingElement returned by the CreateIssuedTokenOverTransportBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na IssuedTokenOverTransport .Alternatively, set the authenticationMode attribute to IssuedTokenOverTransport.

KerberosKerberos

W tym trybie uwierzytelniania klient jest uwierzytelniany w usłudze przy użyciu biletu protokołu Kerberos.With this authentication mode, the client authenticates to the service using a Kerberos ticket. Ten sam bilet zapewnia również uwierzytelnianie serwera.That same ticket also provides server authentication. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateKerberosBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateKerberosBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na Kerberos .Alternatively, set the authenticationMode attribute to Kerberos.

Uwaga

Aby można było korzystać z tego trybu uwierzytelniania, konto usługi musi być skojarzone z główną nazwą usługi (SPN).In order to use this authentication mode, the service account must be associated with a service principal name (SPN). W tym celu należy uruchomić usługę w ramach konta usługi sieciowej lub lokalnego konta SYSTEMowego.To do this, run the service under the NETWORK SERVICE account or the LOCAL SYSTEM account. Alternatywnie możesz utworzyć nazwę SPN dla konta usługi za pomocą narzędzia SetSpn.exe.Alternatively, use the SetSpn.exe tool to create an SPN for the service account. W obu przypadkach klient musi używać poprawnej nazwy SPN w <servicePrincipalName> elemencie lub przy użyciu EndpointAddress konstruktora.In either case, the client must use the correct SPN in the <servicePrincipalName> element, or by using the EndpointAddress constructor. Aby uzyskać więcej informacji, zobacz tożsamość usługi i uwierzytelnianie.For more information, see Service Identity and Authentication.

Uwaga

Gdy Kerberos jest używany tryb uwierzytelniania, Anonymous Delegation poziomy personifikacji nie są obsługiwane.When the Kerberos authentication mode is used, the Anonymous and Delegation impersonation levels are not supported.

KerberosOverTransportKerberosOverTransport

W tym trybie uwierzytelniania klient jest uwierzytelniany w usłudze przy użyciu biletu protokołu Kerberos.With this authentication mode, the client authenticates to the service using a Kerberos ticket. Token Kerberos jest wyświetlany w warstwie protokołu SOAP jako token pomocniczy. oznacza to token, który podpisze komunikat.The Kerberos token appears at the SOAP layer as an endorsing supporting token; that is, a token that signs the message signature. Usługa jest uwierzytelniana przy użyciu certyfikatu X. 509 w warstwie transportowej.The service is authenticated using an X.509 certificate at the transport layer. Element powiązania zabezpieczeń jest TransportSecurityBindingElement zwracany przez CreateKerberosOverTransportBindingElement metodę.The security binding element is a TransportSecurityBindingElement returned by the CreateKerberosOverTransportBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na KerberosOverTransport .Alternatively, set the authenticationMode attribute to KerberosOverTransport.

Uwaga

Aby można było korzystać z tego trybu uwierzytelniania, konto usługi musi być skojarzone z nazwą SPN.In order to use this authentication mode, the service account must be associated with an SPN. W tym celu należy uruchomić usługę w ramach konta usługi sieciowej lub lokalnego konta SYSTEMowego.To do this, run the service under the NETWORK SERVICE account or the LOCAL SYSTEM account. Alternatywnie możesz utworzyć nazwę SPN dla konta usługi za pomocą narzędzia SetSpn.exe.Alternatively, use the SetSpn.exe tool to create an SPN for the service account. W obu przypadkach klient musi używać poprawnej nazwy SPN w <servicePrincipalName> elemencie lub przy użyciu EndpointAddress konstruktora.In either case, the client must use the correct SPN in the <servicePrincipalName> element, or by using the EndpointAddress constructor. Aby uzyskać więcej informacji, zobacz tożsamość usługi i uwierzytelnianie.For more information, see Service Identity and Authentication.

MutualCertificateMutualCertificate

W tym trybie uwierzytelniania klient jest uwierzytelniany przy użyciu certyfikatu X. 509, który pojawia się na warstwie protokołu SOAP jako tokenu pomocniczego. oznacza to token, który podpisze komunikat.With this authentication mode, the client authenticates using an X.509 certificate that appears at the SOAP layer as an endorsing supporting token; that is, a token that signs the message signature. Usługa jest również uwierzytelniana przy użyciu certyfikatu X. 509.The service is also authenticated using an X.509 certificate. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateMutualCertificateBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateMutualCertificateBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na MutualCertificate .Alternatively, set the authenticationMode attribute to MutualCertificate.

MutualCertificateDuplexMutualCertificateDuplex

W tym trybie uwierzytelniania klient jest uwierzytelniany przy użyciu certyfikatu X. 509, który pojawia się na warstwie protokołu SOAP jako tokenu pomocniczego. oznacza to token, który podpisze komunikat.With this authentication mode, the client authenticates using an X.509 certificate that appears at the SOAP layer as an endorsing supporting token; that is, a token that signs the message signature. Usługa jest również uwierzytelniana przy użyciu certyfikatu X. 509.The service is also authenticated using an X.509 certificate. Powiązanie jest AsymmetricSecurityBindingElement zwracane przez CreateMutualCertificateDuplexBindingElement metodę.The binding is a AsymmetricSecurityBindingElement returned by the CreateMutualCertificateDuplexBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na MutualCertificateDuplex .Alternatively, set the authenticationMode attribute to MutualCertificateDuplex.

MutualSslNegotiatedMutualSslNegotiated

W przypadku tego trybu uwierzytelniania klient i usługa uwierzytelniają się za pomocą certyfikatów X. 509.With this authentication mode, the client and the service authenticate using X.509 certificates. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateSslNegotiationBindingElement metodę, gdy wartość true jest przekazana dla pierwszego parametru.The security binding element is a SymmetricSecurityBindingElement returned by the CreateSslNegotiationBindingElement method when a value of true is passed for the first parameter. Alternatywnie możesz ustawić authenticationMode atrybut na MutualSslNegotiated .Alternatively, set the authenticationMode attribute to MutualSslNegotiated.

SecureConversationSecureConversation

Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateSecureConversationBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateSecureConversationBindingElement method. Ta metoda przyjmuje SecurityBindingElement jako parametr, który jest używany podczas inicjowania w celu ustanowienia bezpiecznej sesji.This method takes a SecurityBindingElement as a parameter, which is used during initialization to establish the secure session. Alternatywnie możesz ustawić authenticationMode atrybut na SecureConversation .Alternatively, set the authenticationMode attribute to SecureConversation.

Jeśli nie określono powiązania uruchamiania, SspiNegotiated tryb uwierzytelniania jest używany na potrzeby ładowania początkowego.If no bootstrap binding is specified, then the SspiNegotiated authentication mode is used for bootstrap.

SspiNegotiationSspiNegotiation

W przypadku tego trybu uwierzytelniania do uwierzytelniania klienta i serwera jest używany protokół negocjacji.With this authentication mode, a negotiation protocol is used to perform client and server authentication. Protokół Kerberos jest używany, jeśli jest to możliwe; w przeciwnym razie jest używane polecenie NT LanMan (NTLM).Kerberos is used if possible; otherwise, NT LanMan (NTLM) is used. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateSspiNegotiationBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateSspiNegotiationBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na SspiNegotiated .Alternatively, set the authenticationMode attribute to SspiNegotiated.

SspiNegotiatedOverTransportSspiNegotiatedOverTransport

W przypadku tego trybu uwierzytelniania do uwierzytelniania klienta i serwera jest używany protokół negocjacji.With this authentication mode, a negotiation protocol is used to perform client and server authentication. Protokół Kerberos jest używany, jeśli jest to możliwe; w przeciwnym razie jest używane uwierzytelnianie NTLM.Kerberos protocol is used if possible; otherwise, NTLM is used. Otrzymany token pojawia się na warstwie protokołu SOAP jako token pomocniczy oznacza to token, który podpisze komunikat.The resulting token appears at the SOAP layer as an endorsing supporting token; that is, a token that signs the message signature. Usługa jest również uwierzytelniana w warstwie transportowej przez certyfikat X. 509.The service is additionally authenticated at the transport layer by an X.509 certificate. Element powiązania zabezpieczeń jest TransportSecurityBindingElement zwracany przez CreateSspiNegotiationOverTransportBindingElement metodę.The security binding element is a TransportSecurityBindingElement returned by the CreateSspiNegotiationOverTransportBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na SspiNegotiatedOverTransport .Alternatively, set the authenticationMode attribute to SspiNegotiatedOverTransport.

UserNameForCertificateUserNameForCertificate

W tym trybie uwierzytelniania klient jest uwierzytelniany w usłudze przy użyciu tokenu nazwy użytkownika, który pojawia się w warstwie protokołu SOAP jako podpisanego tokenu pomocniczego; oznacza to token podpisany przez sygnaturę wiadomości.With this authentication mode, the client authenticates to the service using a Username Token that appears at the SOAP layer as a signed supporting token; that is, a token that is signed by the message signature. Usługa jest uwierzytelniana na kliencie przy użyciu certyfikatu X. 509.The service authenticates to the client using an X.509 certificate. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateUserNameForCertificateBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateUserNameForCertificateBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na UserNameForCertificate .Alternatively, set the authenticationMode attribute to UserNameForCertificate.

W przypadku UserNameForCertificate trybu uwierzytelniania zarówno klient, jak i usługa muszą używać WS-Security 1,1.For the UserNameForCertificate authentication mode, both the client and service must be using WS-Security 1.1.

UserNameForSslNegotiatedUserNameForSslNegotiated

W tym trybie uwierzytelniania klient jest uwierzytelniany przy użyciu tokenu nazwy użytkownika, który jest wyświetlany w warstwie protokołu SOAP jako podpisany token pomocniczy; oznacza to token podpisany przez sygnaturę wiadomości.With this authentication mode, the client is authenticates using a Username Token which appears at the SOAP layer as a signed supporting token; that is, a token that is signed by the message signature. Usługa jest uwierzytelniana przy użyciu certyfikatu X. 509.The service is authenticated using an X.509 certificate. Element powiązania zabezpieczeń jest SymmetricSecurityBindingElement zwracany przez CreateUserNameForSslBindingElement metodę.The security binding element is a SymmetricSecurityBindingElement returned by the CreateUserNameForSslBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na UserNameForSslNegotiated .Alternatively, set the authenticationMode attribute to UserNameForSslNegotiated.

UserNameOverTransportUserNameOverTransport

W tym trybie uwierzytelniania klient jest uwierzytelniany przy użyciu tokenu nazwy użytkownika, który jest wyświetlany na warstwie protokołu SOAP jako podpisanego tokenu pomocniczego; oznacza to token podpisany przez sygnaturę wiadomości.With this authentication mode, the client authenticates using a Username Token that appears at the SOAP layer as a signed supporting token; that is, a token that is signed by the message signature. Usługa jest uwierzytelniana przy użyciu certyfikatu X. 509 w warstwie transportowej.The service is authenticated using an X.509 certificate at the transport layer. Element powiązania zabezpieczeń jest TransportSecurityBindingElement zwracany przez CreateUserNameOverTransportBindingElement metodę.The security binding element is a TransportSecurityBindingElement returned by the CreateUserNameOverTransportBindingElement method. Alternatywnie możesz ustawić authenticationMode atrybut na UserNameOverTransport .Alternatively, set the authenticationMode attribute to UserNameOverTransport.

Zobacz teżSee also