Freigeben über


Authentifizierungsmodi für SecurityBindingElement

Windows Communication Foundation (WCF) bietet mehrere Modi, mit denen sich Clients und Dienste gegenseitig authentifizieren. Sie können Sicherheitsbindungselemente für diese Authentifizierungsmodi erstellen. Dazu verwenden Sie statische Methoden für die SecurityBindingElement-Klasse oder führen eine entsprechende Konfiguration durch. In diesem Thema werden die 18 Authentifizierungsmodi kurz beschrieben.

Ein Beispiel für die Verwendung des Elements für einen der Authentifizierungsmodi finden Sie unter Vorgehensweise: Erstellen eines SecurityBindingElement für einen angegebenen Authentifizierungsmodus.

Grundlegende Konfigurationsprogrammierung

Im folgenden Verfahren wird beschrieben, wie der Authentifizierungsmodus in einer Konfigurationsdatei festgelegt wird.

So legen Sie den Authentifizierungsmodus in der Konfiguration fest

  1. Fügen Sie dem <Bindungselement> ein <customBinding> hinzu.

  2. Fügen Sie als untergeordnetes Element ein <Bindings>-Element zu dem <customBinding>-Element hinzu.

  3. Fügen Sie dem <security>-Element ein <binding>-Element hinzu.

  4. Legen Sie das authenticationMode-Attribut auf einen der unten beschriebenen Werte fest. Im folgenden Codebeispiel wird der Modus auf AnonymousForCertificate festgelegt.

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

So legen Sie den Modus programmgesteuert fest

  1. Beim Rückgabetyp kann es sich um einen der folgenden handeln: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement oder SecurityBindingElement.

  2. Rufen Sie die entsprechende statische Methode der SecurityBindingElement-Klasse auf. Im folgenden Codebeispiel wird die CreateAnonymousForCertificateBindingElement-Methode aufgerufen.

    SymmetricSecurityBindingElement b =
        SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement();
    
    Dim b As SymmetricSecurityBindingElement = _
    SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
    
  3. Verwenden Sie das Bindungselement, um die benutzerdefinierte Bindung zu erstellen. Weitere Informationen finden Sie unter Benutzerdefinierte Bindung.

Modusbeschreibungen

AnonymFürZertifikat

In diesem Authentifizierungsmodus ist der Client anonym, und der Dienst wird über ein X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateAnonymousForCertificateBindingElement. Legen Sie alternativ das authenticationMode-Attribut des <security>-Elements auf AnonymousForCertificatefest.

AnonymousForSslNegotiated

Bei diesem Authentifizierungsmodus ist der Client anonym und der Dienst wird mit einem X.509-Zertifikat authentifiziert, das zur Laufzeit ausgehandelt wird. Das Sicherheitsbindungselement ist ein SymmetricSecurityBindingElement, das von der CreateSslNegotiationBindingElement-Methode zurückgegeben wird, wenn für den ersten Parameter der Wert false übergeben wird. Legen Sie das authenticationMode-Attribut alternativ auf AnonymousForSslNegotiated fest.

ZertifikatÜberTransport

In diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das an der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt wird, d. h. ein Token, das die Nachricht signiert. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der TransportSecurityBindingElement-Methode zurückgegebenes CreateCertificateOverTransportBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf CertificateOverTransport fest.

Ausgestelltes Token

Bei diesem Authentifizierungsmodus wird der Client nicht am Dienst selbst authentifiziert. Er wird stattdessen an einem Sicherheitstokendienst authentifiziert und empfängt ein SAML-Token, das er dem Server als Beleg für den freigegebenen Schlüssel präsentiert. Der Dienst wird nicht am Client authentifiziert. Stattdessen verschlüsselt der Sicherheitstokendienst den freigegebenen Schlüssel als Teil des ausgestellten Tokens, sodass nur der Dienst den Schlüssel entschlüsseln kann. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateIssuedTokenBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedToken fest.

AusgegebenesTokenFürZertifikat

Bei diesem Authentifizierungsmodus wird der Client nicht am Dienst selbst authentifiziert. Er wird stattdessen an einem Sicherheitstokendienst authentifiziert und empfängt ein SAML-Token, das er dem Server als Beleg für den freigegebenen Schlüssel präsentiert. Das ausgegebene Token wird an der SOAP-Schicht als unterstützendes Token bzw. Bearer-Token angezeigt, d. h. als ein Token, das die Nachricht signiert. Der Dienst wird über ein X.509-Zertifikat am Client authentifiziert. Das Sicherheitsbindungselement ist ein SymmetricSecurityBindingElement, das von der Methode CreateIssuedTokenForCertificateBindingElement zurückgegeben wird. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenForCertificate fest.

Ausgestelltes Token für SSL-Verhandlung

Bei diesem Authentifizierungsmodus wird der Client nicht am Dienst selbst authentifiziert. Er wird stattdessen an einem Sicherheitstokendienst authentifiziert und empfängt ein SAML-Token, das er dem Server als Beleg für den freigegebenen Schlüssel präsentiert. Das ausgegebene Token wird an der SOAP-Schicht als unterstützendes Token bzw. Bearer-Token angezeigt, d. h. als ein Token, das die Nachricht signiert. Der Dienst wird über ein X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateIssuedTokenForSslBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenForSslNegotiated fest.

AusgestelltesTokenÜberTransport

Bei diesem Authentifizierungsmodus wird der Client nicht am Dienst selbst authentifiziert. Er wird stattdessen an einem Sicherheitstokendienst authentifiziert und empfängt ein SAML-Token, das er dem Server als Beleg für den freigegebenen Schlüssel präsentiert. Das ausgegebene Token wird an der SOAP-Schicht als unterstützendes Token bzw. Bearer-Token angezeigt, d. h. als ein Token, das die Nachricht signiert. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der TransportSecurityBindingElement-Methode zurückgegebenes CreateIssuedTokenOverTransportBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenOverTransport fest.

Kerberos

In diesem Authentifizierungsmodus wird der Client über ein Kerberos-Ticket am Dienst authentifiziert. Dieses gleiche Ticket bietet auch Serverauthentifizierung. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateKerberosBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf Kerberos fest.

Hinweis

Um diesen Authentifizierungsmodus zu verwenden, muss dem Dienstkonto ein Dienstprinzipalname zugeordnet sein. Führen Sie den Dienst zu diesem Zweck unter dem Konto NETZWERKDIENST oder dem Konto LOKALES SYSTEM aus. Verwenden Sie andernfalls das Tool SetSpn.exe, um einen Dienstprinzipalnamen für das Dienstkonto zu erstellen. Der Client muss in beiden Fällen entweder den korrekten servicePrincipalName-Element oder den -Konstruktor verwenden. Weitere Informationen finden Sie unter Dienstidentität und -authentifizierung.

Hinweis

Wenn der Kerberos-Authentifizierungsmodus verwendet wird, werden Anonymous- und Delegation-Impersonationsebenen nicht unterstützt.

KerberosOverTransport.

In diesem Authentifizierungsmodus wird der Client über ein Kerberos-Ticket am Dienst authentifiziert. Das Kerberos-Token wird in der SOAP-Schicht als unterstützendes Bestätigungstoken angezeigt, d. h. ein Token, das die Nachrichtensignatur signiert. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der TransportSecurityBindingElement-Methode zurückgegebenes CreateKerberosOverTransportBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf KerberosOverTransport fest.

Hinweis

Um diesen Authentifizierungsmodus zu verwenden, muss dem Dienstkonto ein Dienstprinzipalname (SPN) zugeordnet sein. Führen Sie den Dienst zu diesem Zweck unter dem Konto NETZWERKDIENST oder dem Konto LOKALES SYSTEM aus. Andernfalls verwenden Sie das Tool SetSpn.exe, um einen Dienstprinzipalnamen für das Dienstkonto zu erstellen. In jedem Fall muss der Client den korrekten im <servicePrincipalName>-Element oder den EndpointAddress-Konstruktor verwenden. Weitere Informationen finden Sie unter Dienstidentität und -authentifizierung.

Gegenseitiges Zertifikat

In diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das an der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt wird, d. h. ein Token, das die Nachricht signiert. Der Dienst wird ebenfalls über ein X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateMutualCertificateBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf MutualCertificate fest.

MutualCertificateDuplex

In diesem Authentifizierungsmodus authentifiziert sich der Client über ein X.509-Zertifikat, das an der SOAP-Schicht als ausstellendes unterstützendes Token angezeigt wird, d. h. ein Token, das die Nachricht signiert. Der Dienst wird ebenfalls über ein X.509-Zertifikat authentifiziert. Das AsymmetricSecurityBindingElement ist eine durch die CreateMutualCertificateDuplexBindingElement-Methode zurückgegebene Bindung. Legen Sie das authenticationMode-Attribut alternativ auf MutualCertificateDuplex fest.

MutualSslVerhandelt

In diesem Authentifizierungsmodus werden sowohl der Client als auch der Dienst über X.509-Zertifikate authentifiziert. Das Sicherheitsbindungselement ist ein SymmetricSecurityBindingElement, das von der CreateSslNegotiationBindingElement-Methode zurückgegeben wird, wenn für den ersten Parameter der Wert true übergeben wird. Legen Sie das authenticationMode-Attribut alternativ auf MutualSslNegotiated fest.

SecureConversation

Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateSecureConversationBindingElement. Diese Methode verwendet ein SecurityBindingElement als Parameter, der während der Initialisierung zum Erstellen der sicheren Sitzung verwendet wird. Legen Sie das authenticationMode-Attribut alternativ auf SecureConversation fest.

Falls keine Bootstrap-Bindung angegeben ist, wird der Authentifizierungsmodus SspiNegotiated verwendet.

SspiNegotiation

In diesem Authentifizierungsmodus wird ein Aushandlungsprotokoll für die Client- und Serverauthentifizierung verwendet. Wenn möglich, wird Kerberos verwendet; andernfalls wird NT LanMan (NTLM) genutzt. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateSspiNegotiationBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf SspiNegotiated fest.

SspiNegotiatedOverTransport

In diesem Authentifizierungsmodus wird ein Aushandlungsprotokoll für die Client- und Serverauthentifizierung verwendet. Falls möglich, wird Kerberos verwendet, andernfalls NTLM. Das resultierende Token wird an der SOAP-Schicht als befürwortendes unterstützendes Token angezeigt, d. h. ein Token, das die Signatur der Nachricht unterzeichnet. Der Dienst wird zusätzlich auf der Transportschicht über ein X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der TransportSecurityBindingElement-Methode zurückgegebenes CreateSspiNegotiationOverTransportBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf SspiNegotiatedOverTransport fest.

BenutzernameFürZertifikat

In diesem Authentifizierungsmodus authentifiziert sich der Client über ein Benutzernamentoken, das an der SOAP-Schicht als signiertes unterstützendes Token angezeigt wird. Dieses Token wird von der Nachrichtensignatur signiert. Der Dienst wird über ein X.509-Zertifikat am Client authentifiziert. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateUserNameForCertificateBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf UserNameForCertificate fest.

Für den UserNameForCertificate-Authentifizierungsmodus müssen sowohl der Client als auch der Dienst WS-Sicherheit 1.1 verwenden.

BenutzernameFürSslVerhandelt

In diesem Authentifizierungsmodus authentifiziert sich der Client über ein Benutzernamentoken, das an der SOAP-Schicht als signiertes unterstützendes Token angezeigt wird. Dieses Token wird von der Nachrichtensignatur signiert. Der Dienst wird über ein X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateUserNameForSslBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf UserNameForSslNegotiated fest.

UserNameOverTransport

In diesem Authentifizierungsmodus authentifiziert sich der Client über ein Benutzernamentoken, das an der SOAP-Schicht als signiertes unterstützendes Token angezeigt wird. Dieses Token wird von der Nachrichtensignatur signiert. Der Dienst wird über ein X.509-Zertifikat auf der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der TransportSecurityBindingElement-Methode zurückgegebenes CreateUserNameOverTransportBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf UserNameOverTransport fest.

Siehe auch