Vorgehensweise: Erstellen unterstützender AnmeldeinformationenHow to: Create a Supporting Credential

Sie können über ein benutzerdefiniertes Sicherheitsschema verfügen, für das mehrere Anmeldeinformationen erforderlich sind.It is possible to have a custom security scheme that requires more than one credential. Beispielsweise kann ein Dienst vom Client nicht nur den Benutzernamen und das Kennwort fordern, sondern auch Anmeldeinformationen, die belegen, dass der Client älter als 18 Jahre ist.For example, a service may demand from the client not just a user name and password, but also a credential that proves the client is over the age of 18. Anmeldeinformationen sind ein unterstützende Anmeldeinformationen.The second credential is a supporting credential. In diesem Thema wird erläutert, wie solche Anmeldeinformationen in einem Windows Communication Foundation (WCF)-Client implementiert wird.This topic explains how to implement such credentials in an Windows Communication Foundation (WCF) client.

Hinweis

Die Spezifikation für unterstützende Anmeldeinformationen ist Teil der WS-SecurityPolicy-Spezifikation.The specification for supporting credentials is part of the WS-SecurityPolicy specification. Weitere Informationen finden Sie unter Sicherheitsspezifikationen für Webdienste.For more information, see Web Services Security Specifications.

Unterstützende TokenSupporting Tokens

In Kürze: bei Verwendung von nachrichtensicherheit eine primären Anmeldeinformationen wird immer verwendet, um die Nachricht (z. B. ein x. 509-Zertifikat oder ein Kerberos-Ticket) sichern.In brief, when you use message security, a primary credential is always used to secure the message (for example, an X.509 certificate or a Kerberos ticket).

Gemäß der Spezifikation verwendet eine Bindung Token auf die Sicherung des Nachrichtenaustauschs.As defined by the specification, a security binding uses tokens to secure the message exchange. Ein token ist eine Darstellung von Sicherheitsanmeldeinformationen.A token is a representation of a security credential.

Die Sicherheitsbindung verwendet zum Erstellen einer Signatur ein in ihrer Richtlinie identifiziertes primäres Token.The security binding uses a primary token identified in the security binding policy to create a signature. Diese Signatur wird als bezeichnet den Nachrichtensignatur.This signature is referred to as the message signature.

Es können zusätzliche Token angegeben werden, um die von dem der Nachrichtensignatur zugeordneten Token bereitgestellten Ansprüche zu erweitern.Additional tokens can be specified to augment the claims provided by the token associated with the message signature.

Unterzeichnen, Signieren und VerschlüsselnEndorsing, Signing, and Encrypting

Im Ergebnis unterstützender Anmeldeinformationen eine unterstützendes Token innerhalb der Nachricht übertragen.A supporting credential results in a supporting token transmitted inside the message. Die WS-SecurityPolicy-Spezifikation definiert vier Methoden zum Anhängen eines unterstützenden Tokens an die Nachricht, wie in der folgenden Tabelle beschrieben.The WS-SecurityPolicy specification defines four ways to attach a supporting token to the message, as described in the following table.

ZweckPurpose BeschreibungDescription
SigniertSigned Das unterstützende Token ist im Sicherheitsheader enthalten und wird durch die Nachrichtensignatur signiert.The supporting token is included in the security header and is signed by the message signature.
UnterzeichnendEndorsing Ein unterzeichnendes Token die Nachrichtensignatur signiert.An endorsing token signs the message signature.
Signiert und unterzeichnendSigned and Endorsing Signierte, unterzeichnende Token signieren das gesamte aus der Nachrichtensignatur erstellte ds:Signature-Element und werden selbst durch die Nachrichtensignatur signiert; d. h., beide Token (das für die Nachrichtensignatur verwendete Token und das signierte unterzeichnende Token) signieren einander.Signed, endorsing tokens sign the entire ds:Signature element produced from the message signature and are themselves signed by that message signature; that is, both tokens (the token used for the message signature and the signed endorsing token) sign each other.
Signiert und verschlüsselndSigned and Encrypting Signierte, verschlüsselte unterstützende Token sind signierte unterstützende Token, die beim Anzeigen im wsse:SecurityHeader auch verschlüsselt werden.Signed, encrypted supporting tokens are signed supporting tokens that are also encrypted when they appear in the wsse:SecurityHeader.

Programmieren von unterstützenden AnmeldeinformationenProgramming Supporting Credentials

Zum Erstellen eines Diensts, die unterstützende Token wird verwendet, müssen Sie erstellen, eine <CustomBinding >.To create a service that uses supporting tokens you must create a <customBinding>. (Weitere Informationen finden Sie unter Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElement.)(For more information, see How to: Create a Custom Binding Using the SecurityBindingElement.)

Der erste Schritt beim Erstellen einer benutzerdefinierten Bindung ist das Erstellen eines Sicherheitsbindungselements, das einer der folgenden drei Typen sein kann:The first step when creating a custom binding is to create a security binding element, which can be one of three types:

Alle Klassen erben vom SecurityBindingElement, das vier relevante Eigenschaften umfasst:All classes inherit from the SecurityBindingElement, which includes four relevant properties:

BereicheScopes

Für unterstützende Anmeldeinformationen existieren vier Bereiche:Two scopes exist for supporting credentials:

  • Endpunkt unterstützende Token unterstützen alle Vorgänge eines Endpunkts.Endpoint supporting tokens support all operations of an endpoint. Die Anmeldeinformationen, die das unterstützende Token darstellt, können beim Aufrufen eines beliebigen Endpunktvorgangs verwendet werden.That is, the credential that the supporting token represents can be used whenever any endpoint operations are invoked.

  • Vorgang unterstützende Token unterstützen nur einen bestimmten endpunktvorgang.Operation supporting tokens support only a specific endpoint operation.

Wie durch die Eigenschaftennamen angegeben, können unterstützende Anmeldeinformationen erforderlich oder optional sein.As indicated by the property names, supporting credentials can be either required or optional. Die unterstützenden Anmeldeinformationen werden verwendet, wenn sie vorhanden, aber nicht erforderlich sind; die Authentifizierung schlägt jedoch nicht fehl, wenn sie nicht vorhanden sind.That is, if the supporting credential is used if it is present, although it is not necessary, but the authentication will not fail if it is not present.

VerfahrenProcedures

So erstellen Sie eine benutzerdefinierte Bindung, die unterstützende Anmeldeinformationen enthältTo create a custom binding that includes supporting credentials

  1. Erstellen Sie ein Sicherheitsbindungselement.Create a security binding element. Im nachfolgenden Beispiel wird ein SymmetricSecurityBindingElement mit dem UserNameForCertificate-Authentifizierungsmodus erstellt.The example below creates a SymmetricSecurityBindingElement with the UserNameForCertificate authentication mode. Verwenden Sie die CreateUserNameForCertificateBindingElement-Methode.Use the CreateUserNameForCertificateBindingElement method.

  2. Fügen Sie den unterstützenden Parameter der von der entsprechenden Eigenschaft (Endorsing, Signed, SignedEncrypted oder SignedEndorsed) zurückgegebenen Auflistung von Typen hinzu.Add the supporting parameter to the collection of types returned by the appropriate property (Endorsing, Signed, SignedEncrypted, or SignedEndorsed). Die Typen im System.ServiceModel.Security.Tokens-Namespace umfassen häufig verwendete Typen wie die X509SecurityTokenParameters.The types in the System.ServiceModel.Security.Tokens namespace include commonly used types, such as the X509SecurityTokenParameters.

BeispielExample

BeschreibungDescription

Im folgenden Beispiel wird eine Instanz des SymmetricSecurityBindingElement erstellt und eine Instanz der KerberosSecurityTokenParameters-Klasse der von der unterzeichenden Eigenschaft zurückgegebenen Auflistung hinzugefügt.The following example creates an instance of the SymmetricSecurityBindingElement and adds an instance of the KerberosSecurityTokenParameters class to the collection the Endorsing property returned.

CodeCode

public static Binding CreateMultiFactorAuthenticationBinding()
{
    HttpTransportBindingElement httpTransport = new HttpTransportBindingElement();

    // The message security binding element will be configured to require 2 tokens:
    // 1) A user name/password encrypted with the service token.
    // 2) A client certificate used to sign the message.

    // Instantiate a binding element that will require the user name/password token 
    // in the message (encrypted with the server certificate).
    SymmetricSecurityBindingElement messageSecurity = SecurityBindingElement.CreateUserNameForCertificateBindingElement();

    // Create supporting token parameters for the client X.509 certificate.
    X509SecurityTokenParameters clientX509SupportingTokenParameters = new X509SecurityTokenParameters();
    // Specify that the supporting token is passed in the message send by the client to the service.
    clientX509SupportingTokenParameters.InclusionMode = SecurityTokenInclusionMode.AlwaysToRecipient;
    // Turn off derived keys.
    clientX509SupportingTokenParameters.RequireDerivedKeys = false;
    // Augment the binding element to require the client's X.509 certificate as an 
    // endorsing token in the message.
    messageSecurity.EndpointSupportingTokenParameters.Endorsing.Add(clientX509SupportingTokenParameters);

    // Create a CustomBinding based on the constructed security binding element.
    return new CustomBinding(messageSecurity, httpTransport);
}

Siehe auchSee Also

Vorgehensweise: Erstellen einer benutzerdefinierten Bindung mit dem SecurityBindingElementHow to: Create a Custom Binding Using the SecurityBindingElement