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
Fügen Sie dem <Bindungselement> ein <customBinding> hinzu.
Fügen Sie als untergeordnetes Element dem Element ein <Bindungselement>
<customBinding>
hinzu.Fügen Sie dem
<security>
-Element ein<binding>
-Element hinzu.Legen Sie das
authenticationMode
-Attribut auf einen der unten beschriebenen Werte fest. Im folgenden Codebeispiel wird der Modus aufAnonymousForCertificate
festgelegt.<bindings> <customBinding> <binding name="SecureCustomBinding"> <security authenticationMode ="AnonymousForCertificate" /> </binding> </customBinding> </bindings>
So legen Sie den Modus programmgesteuert fest
Beim Rückgabetyp kann es sich um einen der folgenden handeln: SymmetricSecurityBindingElement, TransportSecurityBindingElement, AsymmetricSecurityBindingElement oder SecurityBindingElement.
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()
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 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 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.