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 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 <bindings>customBinding Element-Element ein-Element hinzu.
Fügen Sie dem <customBinding>-Element ein <binding>-Element als untergeordnetes Element hinzu.
Fügen Sie dem <security><binding>-Element ein -Element hinzu.
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
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.
Dim b As SymmetricSecurityBindingElement = _ SecurityBindingElement.CreateAnonymousForCertificateBindingElement()
SymmetricSecurityBindingElement b = SecurityBindingElement. CreateAnonymousForCertificateBindingElement();
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
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 CreateIssuedTokenBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 authentifiziert sich dem Client gegenüber mit einem X.509-Zertifikat. Das Sicherheitsbindungselement ist ein von der CreateIssuedTokenForCertificateBindingElement-Methode zurückgegebenes SymmetricSecurityBindingElement. 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 mit einem 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
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 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.
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 Dienstprinzipalnamen 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 an der Transportschicht authentifiziert. Das Sicherheitsbindungselement ist ein von der CreateKerberosOverTransportBindingElement-Methode zurückgegebenes TransportSecurityBindingElement. 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 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
Vorgehensweise: Erstellen eines SecurityBindingElement für einen angegebenen Authentifizierungsmodus