SecurityBindingElement-Authentifizierungsmodi

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.

Programmgesteuerte Konfiguration

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 dem Element ein <Bindungselement><customBinding> 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

AnonymousForCertificate

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

In diesem Authentifizierungsmodus ist der Client anonym, und der Dienst wird über ein X.509-Zertifikat authentifiziert, das zur Laufzeit verhandelt 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.

CertificateOverTransport

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.

IssuedToken

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.

IssuedTokenForCertificate

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 von der SymmetricSecurityBindingElement-Methode zurückgegebenes CreateIssuedTokenForCertificateBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenForCertificate fest.

IssuedTokenForSslNegotiated

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.

IssuedTokenOverTransport

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 auf jeden Fall den korrekten im <servicePrincipalName>-Element oder den EndpointAddress-Konstruktor verwenden. Weitere Informationen finden Sie unter Dienstidentität und -authentifizierung.

Hinweis

Wenn der Kerberos-Authentifizierungsmodus verwendet wird, werden die Anonymous-Ebene und die Delegation-Ebene des Identitätswechsels nicht unterstützt.

KerberosOverTransport.

In diesem Authentifizierungsmodus wird der Client über ein Kerberos-Ticket am Dienst authentifiziert. Das Kerberos-Token wird an der SOAP-Schicht als unterstützendes Token angezeigt, 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 CreateKerberosOverTransportBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf KerberosOverTransport 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 auf jeden Fall den korrekten im <servicePrincipalName>-Element oder den EndpointAddress-Konstruktor verwenden. Weitere Informationen finden Sie unter Dienstidentität und -authentifizierung.

MutualCertificate

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 Sicherheitsbindungselement ist ein von der AsymmetricSecurityBindingElement-Methode zurückgegebenes CreateMutualCertificateDuplexBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf MutualCertificateDuplex fest.

MutualSslNegotiated

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 Bootstrapbindung angegeben ist, wird der SspiNegotiated-Authentifizierungsmodus verwendet.

SspiNegotiation

In diesem Authentifizierungsmodus wird ein Aushandlungsprotokoll für die Client- und Serverauthentifizierung verwendet. Falls möglich, wird Kerberos verwendet, andernfalls NTLM. 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 unterstützendes Token angezeigt, d. h. ein Token, das die Nachricht signiert. 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.

UserNameForCertificate

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.

UserNameForSslNegotiated

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