Share via


SecurityBindingElement-Authentifizierungsmodi

Windows Communication Foundation (WCF) stellt verschiedene Modi bereit, 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 Gewusst wie: 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 <bindings>-Element ein customBinding Element-Element hinzu.

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

  3. Fügen Sie dem <binding>-Element ein <security>-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.

  3. Verwenden Sie das Bindungselement, um die benutzerdefinierte Bindung zu erstellen. Weitere Informationen finden Sie unter Benutzerdefinierte Bindungen.

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 CreateAnonymousForCertificateBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. Legen Sie das authenticationMode-Attribut des <security>-Elements alternativ auf AnonymousForCertificate fest.

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 an der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateCertificateOverTransportBindingElement-Methode zurückgegebenes TransportSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf CertificateOverTransport fest.

IssuedToken

In diesem Authentifizierungsmodus authentifiziert sich der Client nicht am Dienst, sondern präsentiert ein von einem Sicherheitstokendienst ausgegebenes Token und einen freigegebenen Schlüssel. 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 CreateIssuedTokenBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedToken fest.

IssuedTokenForCertificate

In diesem Authentifizierungsmodus authentifiziert sich der Client nicht am Dienst, sondern präsentiert stattdessen ein von einem Sicherheitstokendienst ausgegebenes Token sowie einen freigegebenen Schlüssel. Das ausgegebene 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 am Client authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateIssuedTokenForCertificateBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenForCertificate fest.

IssuedTokenForSslNegotiated

In diesem Authentifizierungsmodus authentifiziert sich der Client nicht am Dienst, sondern präsentiert stattdessen ein von einem Sicherheitstokendienst ausgegebenes Token sowie einen freigegebenen Schlüssel. Das ausgegebene 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 authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateIssuedTokenForSslBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenForSslnegotiated fest.

IssuedTokenOverTransport

In diesem Authentifizierungsmodus wird der Client nicht am Dienst authentifiziert, sondern präsentiert stattdessen ein von einem Sicherheitstokendienst ausgegebenes Token und einen freigegebenen Schlüssel. Das ausgegebene 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 an der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateIssuedTokenOverTransportBindingElement-Methode zurückgegebenes TransportSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf IssuedTokenOverTransport fest.

Kerberos

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

Tipp

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 Dienstprinzipalnamen im <servicePrincipalName>-Element oder den EndpointAddress-Konstruktor verwenden. Weitere Informationen finden Sie unter Dienstidentität und Authentifizierung.

Tipp

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 an der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateKerberosOverTransportBindingElement-Methode zurückgegebenes TransportSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf KerberosOverTransport fest.

Tipp

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 Dienstprinzipalnamen 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 auch mit einem X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateMutualCertificateBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 auch über ein X.509-Zertifikat authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateMutualCertificateDuplexBindingElement-Methode zurückgegebenes AsymmetricSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf MutualCertificateDuplex fest.

MutalSslNegotiation

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 CreateSecureConversationBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 CreateSspiNegotiationBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 über ein X.509-Zertifikat an der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateSspiNegotiationOverTransportBindingElement-Methode zurückgegebenes TransportSecurityBindingElement. 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 authentifiziert sich über ein X.509-Zertifikat am Client. Das Sicherheitsbindungselement ist ein von der CreateUserNameForCertificateBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 CreateUserNameForSslBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 an der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateUserNameOverTransportBindingElement-Methode zurückgegebenes TransportSecurityBindingElement. Legen Sie das authenticationMode-Attribut alternativ auf UserNameOverTransport fest.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines SecurityBindingElement für einen angegebenen Authentifizierungsmodus

Referenz

SecurityBindingElement