Vorgehensweise: Konfigurieren von Anmeldeinformationen auf einem VerbunddienstHow to: Configure Credentials on a Federation Service

In Windows Communication Foundation (WCF) besteht aus einen Verbunddienst erstellen folgenden Hauptschritten:In Windows Communication Foundation (WCF), creating a federated service consists of the following main procedures:

  1. Konfigurieren einer WSFederationHttpBinding oder einer ähnlichen benutzerdefinierten Bindung.Configuring a WSFederationHttpBinding or similar custom binding. Weitere Informationen zum Erstellen einer geeigneten Bindung finden Sie unter Vorgehensweise: Erstellen einer WSFederationHttpBinding.For more information about creating an appropriate binding, see How to: Create a WSFederationHttpBinding.

  2. Konfigurieren von IssuedTokenServiceCredential, die kontrollieren, wie dem Dienst präsentierte ausgestellte Token authentifiziert werden.Configuring the IssuedTokenServiceCredential that controls how issued tokens presented to the service are authenticated.

Dieses Thema enthält Details über den zweiten Schritt.This topic provides details about the second step. Weitere Informationen zur Funktionsweise von eines Verbunddiensts finden Sie unter Verbund.For more information about how a federated service works, see Federation.

So legen Sie die Eigenschaften von IssuedTokenServiceCredential in Code festTo set the properties of IssuedTokenServiceCredential in code

  1. Verwenden Sie die IssuedTokenAuthentication-Eigenschaft der ServiceCredentials-Klasse, um einen Verweis an eine IssuedTokenServiceCredential-Instanz zurückzugeben.Use the IssuedTokenAuthentication property of the ServiceCredentials class to return a reference to an IssuedTokenServiceCredential instance. Der Zugriff auf die Eigenschaft erfolgt über die Credentials-Eigenschaft der ServiceHostBase-Klasse.The property is accessed from the Credentials property of the ServiceHostBase class.

  2. Legen Sie die AllowUntrustedRsaIssuers-Eigenschaft auf true fest, wenn selbst ausgestellte Token wie CardSpaceCardSpace-Karten authentifiziert werden sollen.Set the AllowUntrustedRsaIssuers property to true if self-issued tokens such as CardSpaceCardSpace cards are to be authenticated. Die Standardeinstellung ist false.The default is false.

  3. Füllen Sie die von der KnownCertificates-Eigenschaft zurückgegebene Sammlung mit Instanzen der X509Certificate2-Klasse auf.Populate the collection returned by the KnownCertificates property with instances of the X509Certificate2 class. Jede Instanz stellt einen Aussteller dar, von dem der Dienst Token authentifiziert.Each instance represents an issuer from which the service will authenticate tokens.

    Hinweis

    Im Gegensatz zur clientseitigen Sammlung, die von der ScopedCertificates-Eigenschaft zurückgegeben wird, handelt es sich bei der Sammlung bekannter Zertifikate nicht um eine schlüsselgebundene Sammlung.Unlike the client-side collection returned by the ScopedCertificates property, the known certificates collection is not a keyed collection. Der Dienst akzeptiert die Token, die die angegebenen Zertifikate unabhängig von der Adresse des Clients, der die Nachricht mit dem ausgestellten Token gesendet hat, ausstellen (mit gewissen Einschränkungen, die später in diesem Thema beschrieben werden).The service accepts the tokens that the specified certificates issue regardless of the address of the client that sent the message containing the issued token (subject to the further constraints, which are described later in this topic).

  4. Legen Sie die CertificateValidationMode-Eigenschaft auf einen der X509CertificateValidationMode-Enumerationswerte fest.Set the CertificateValidationMode property to one of the X509CertificateValidationMode enumeration values. Dies kann nur in Code erfolgen.This can be done only in code. Die Standardeinstellung ist ChainTrust.The default is ChainTrust.

  5. Wenn die CertificateValidationMode-Eigenschaft auf Custom gesetzt ist, weisen Sie eine Instanz der benutzerdefinierten X509CertificateValidator-Klasse zur CustomCertificateValidator-Eigenschaft zu.If the CertificateValidationMode property is set to Custom, then assign an instance of the custom X509CertificateValidator class to the CustomCertificateValidator property.

  6. Wenn CertificateValidationMode auf ChainTrust oder PeerOrChainTrust eingestellt ist, legen Sie die RevocationMode-Eigenschaft auf einen entsprechenden Wert aus der X509RevocationMode-Enumeration fest.If the CertificateValidationMode is set to ChainTrust or PeerOrChainTrust, set the RevocationMode property to an appropriate value from the X509RevocationMode enumeration. Beachten Sie, dass der Sperrmodus nicht im PeerTrust-Validierungsmodus oder im Custom-Validierungsmodus verwendet wird.Note that the revocation mode is not used in PeerTrust or Custom validation modes.

  7. Weisen Sie, sofern erforderlich, eine Instanz einer benutzerdefinierten SamlSerializer-Klasse zur SamlSerializer-Eigenschaft zu.If needed, assign an instance of a custom SamlSerializer class to the SamlSerializer property. Ein benutzerdefiniertes SAML-Serialisierungsprogramm (Security Assertions Markup Language) wird benötigt, z. B. zum Analysieren von benutzerdefinierten SAML-Assertionen.A custom Security Assertions Markup Language (SAML) serializer is needed, for example, for parsing custom SAML assertions.

So legen Sie die Eigenschaften von IssuedTokenServiceCredential in der Konfiguration festTo set the properties of IssuedTokenServiceCredential in configuration

  1. Erstellen einer <issuedTokenAuthentication> Element als untergeordnetes Element von einem <serviceCredentials> Element.Create an <issuedTokenAuthentication> element as a child of a <serviceCredentials> element.

  2. Legen Sie das allowUntrustedRsaIssuers-Attribut des <issuedTokenAuthentication>-Elements auf true fest, wenn die Authentifizierung ein selbst ausgestelltes Token ist, wie z. B. eine CardSpaceCardSpace-Karte.Set the allowUntrustedRsaIssuers attribute of the <issuedTokenAuthentication> element to true if authenticating a self-issued token, such as an CardSpaceCardSpace card.

  3. Erstellen Sie ein <knownCertificates>-Element als untergeordnetes Element des <issuedTokenAuthentication>-Elements.Create a <knownCertificates> element as a child of the <issuedTokenAuthentication> element.

  4. Erstellen Sie null oder mehr <add>-Elemente als untergeordnete Elemente des<knownCertificates>-Elements, und geben Sie mithilfe derstoreLocation, demstoreName-Attribut, dem findValuex509FindType-Attribut und dem findValue-Attribut an, wie das Zertifikat zu finden ist.Create zero or more <add> elements as children of the <knownCertificates> element, and specify how to locate the certificate using the storeLocation, storeName, x509FindType, and findValue attributes.

  5. Legen Sie bei Bedarf die samlSerializer Attribut des der <issuedTokenAuthentication>-Elements auf den Namen des benutzerdefinierten SamlSerializer Klasse.If necessary, set the samlSerializer attribute of the <issuedTokenAuthentication> element to the type name of the custom SamlSerializer class.

BeispielExample

Im folgenden Beispiel werden die Eigenschaften von IssuedTokenServiceCredential in Code festgelegt.The following example sets the properties of an IssuedTokenServiceCredential in code.

// This method configures the IssuedTokenAuthentication property of a ServiceHost.
public static void ConfigureIssuedTokenServiceCredentials( 
       ServiceHost sh, bool allowCardspaceTokens, IList<X509Certificate2> knownissuers, 
       X509CertificateValidationMode certMode, X509RevocationMode revocationMode, SamlSerializer ser )
{
  // Allow CardSpace tokens.
  sh.Credentials.IssuedTokenAuthentication.AllowUntrustedRsaIssuers = allowCardspaceTokens;
  
  // Set up known issuer certificates.
  foreach(X509Certificate2 cert in knownissuers)
	sh.Credentials.IssuedTokenAuthentication.KnownCertificates.Add ( cert );

  // Set issuer certificate validation and revocation checking modes.
  sh.Credentials.IssuedTokenAuthentication.CertificateValidationMode = 
         X509CertificateValidationMode.PeerOrChainTrust;
     sh.Credentials.IssuedTokenAuthentication.RevocationMode = X509RevocationMode.Online;
     sh.Credentials.IssuedTokenAuthentication.TrustedStoreLocation = StoreLocation.LocalMachine;

  // Set the SamlSerializer, if one is specified.
  if ( ser != null )
	sh.Credentials.IssuedTokenAuthentication.SamlSerializer = ser;
}
' This method configures the IssuedTokenAuthentication property of a ServiceHost.
Public Shared Sub ConfigureIssuedTokenServiceCredentials( _
    ByVal sh As ServiceHost, _
    ByVal allowCardspaceTokens As Boolean, _
    ByVal knownissuers As IList(Of X509Certificate2), _
    ByVal certMode As X509CertificateValidationMode, _
    ByVal revocationMode As X509RevocationMode, _
    ByVal ser As SamlSerializer _
    )
    ' Allow CardSpace tokens.
    sh.Credentials.IssuedTokenAuthentication.AllowUntrustedRsaIssuers = _
    allowCardspaceTokens

    ' Set up known issuer certificates.
    Dim cert As X509Certificate2
    For Each cert In knownissuers
        sh.Credentials.IssuedTokenAuthentication.KnownCertificates.Add(cert)
    Next cert
    ' Set issuer certificate validation and revocation checking modes.
    sh.Credentials.IssuedTokenAuthentication.CertificateValidationMode = _
        X509CertificateValidationMode.PeerOrChainTrust
    sh.Credentials.IssuedTokenAuthentication.RevocationMode = _
    X509RevocationMode.Online

    ' Set the SamlSerializer, if one is specified.
    If Not (ser Is Nothing) Then
        sh.Credentials.IssuedTokenAuthentication.SamlSerializer = ser
    End If
End Sub

Damit ein Verbunddienst einen Client authentifizieren kann, muss Folgendes für das ausgestellte Token zutreffen:In order for a federated service to authenticate a client, the following must be true about the issued token:

  • Wenn die digitale Signatur des ausgestellten Tokens einen RSA-Sicherheitsschlüsselbezeichner verwendet, muss die AllowUntrustedRsaIssuers-Eigenschaft true lauten.When the issued token’s digital signature uses an RSA security key identifier, the AllowUntrustedRsaIssuers property must be true.

  • Wenn die Signatur des ausgestellten Tokens eine Seriennummer eines X.509-Ausstellers, einen Subjektschlüsselbezeichner des X.509-Zertifikats oder einen Fingerabdruck-Sicherheitsbezeichner des X.509-Zertifikats verwendet, muss das ausgestellte Token von einem Zertifikat in der Sammlung signiert sein, die von der KnownCertificates-Eigenschaft der IssuedTokenServiceCredential-Klasse zurückgegeben wurde.When the issued token’s signature uses an X.509 issuer serial number, X.509 subject key identifier, or X.509 thumbprint security identifier, the issued token must be signed by a certificate in the collection returned by the KnownCertificates property of the IssuedTokenServiceCredential class.

  • Wenn das ausgestellte Token mit einem X.509-Zertifikat signiert ist, muss das Zertifikat anhand der semantischen Informationen validiert werden, die vom Wert der CertificateValidationMode-Eigenschaft angegeben werden, unabhängig davon, ob das Zertifikat als X509RawDataKeyIdentifierClause an die vertrauende Seite gesendet wurde oder von der KnownCertificates-Eigenschaft stammt.When the issued token is signed using an X.509 certificate, the certificate must validate per the semantics specified by the value of the CertificateValidationMode property, regardless of whether the certificate was sent to the relying party as a X509RawDataKeyIdentifierClause or was obtained from the KnownCertificates property. Weitere Informationen zur Überprüfung des x. 509-Zertifikats finden Sie unter arbeiten mit Zertifikaten.For more information about X.509 certificate validation, see Working with Certificates.

Durch Festlegen von CertificateValidationMode auf PeerTrust würde beispielsweise jedes ausgestellte Token, dessen Signaturzertifikat im TrustedPeople-Zertifikatspeicher abgelegt ist, authentifiziert werden.For example, setting the CertificateValidationMode to PeerTrust would authenticate any issued token whose signing certificate is in the TrustedPeople certificate store. Legen Sie in diesem Fall die TrustedStoreLocation-Eigenschaft entweder auf CurrentUser oder auf LocalMachine fest.In that case, set the TrustedStoreLocation property to either CurrentUser or LocalMachine. Sie können andere Modi auswählen, einschließlich Custom.You can select other modes, including Custom. Bei Auswahl von Custom müssen Sie eine Instanz der X509CertificateValidator-Klasse zur CustomCertificateValidator-Eigenschaft zuweisen.When Custom is selected, you must assign an instance of the X509CertificateValidator class to the CustomCertificateValidator property. Das benutzerdefinierte Validierungssteuerelement kann Zertifikate mit allen beliebigen Kriterien überprüfen.The custom validator can validate certificates using any criteria it likes. Weitere Informationen finden Sie unter Vorgehensweise: erstellen ein Diensts, der ein benutzerdefiniertes Zertifikats-Validierungssteuerelement verwendet.For more information, see How to: Create a Service that Employs a Custom Certificate Validator.

Siehe auchSee Also

VerbundFederation
Verbund und VertrauenswürdigkeitFederation and Trust
VerbundbeispielFederation Sample
Vorgehensweise: Deaktivieren sicherer Sitzungen auf einer WSFederationHttpBindingHow to: Disable Secure Sessions on a WSFederationHttpBinding
Vorgehensweise: Erstellen einer WSFederationHttpBindingHow to: Create a WSFederationHttpBinding
Vorgehensweise: Erstellen eines VerbundclientsHow to: Create a Federated Client
Arbeiten mit ZertifikatenWorking with Certificates
SecurityBindingElement-AuthentifizierungsmodiSecurityBindingElement Authentication Modes