Vorgehensweise: Konfigurieren von Anmeldeinformationen auf einem Verbunddienst

In Windows Communication Foundation (WCF) wird ein Verbunddienst mit folgenden Hauptschritten erstellt:

  1. Konfigurieren einer WSFederationHttpBinding oder einer ähnlichen benutzerdefinierten Bindung. Weitere Informationen über zum Erstellen einer entsprechenden Bindung finden Sie unter Vorgehensweise: Erstellen einer WSFederationHttpBinding.

  2. Konfigurieren von IssuedTokenServiceCredential, die kontrollieren, wie dem Dienst präsentierte ausgestellte Token authentifiziert werden.

Dieses Thema enthält Details über den zweiten Schritt. Weitere Informationen über darüber, wie ein Verbunddienst funktioniert, finden Sie unter Verbund.

So legen Sie die Eigenschaften von IssuedTokenServiceCredential in Code fest

  1. Verwenden Sie die IssuedTokenAuthentication-Eigenschaft der ServiceCredentials-Klasse, um einen Verweis an eine IssuedTokenServiceCredential-Instanz zurückzugeben. Der Zugriff auf die Eigenschaft erfolgt über die Credentials-Eigenschaft der ServiceHostBase-Klasse.

  2. Legen Sie die AllowUntrustedRsaIssuers-Eigenschaft auf true fest, wenn selbst ausgestellte Token wie CardSpace-Karten authentifiziert werden sollen. Der Standardwert ist false.

  3. Füllen Sie die von der KnownCertificates-Eigenschaft zurückgegebene Sammlung mit Instanzen der X509Certificate2-Klasse auf. Jede Instanz stellt einen Aussteller dar, von dem der Dienst Token authentifiziert.

    ms730131.note(de-de,VS.100).gifHinweis:
    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. 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).

  4. Legen Sie die CertificateValidationMode-Eigenschaft auf einen der X509CertificateValidationMode-Enumerationswerte fest. Dies kann nur in Code erfolgen. Die Standardeinstellung ist ChainTrust.

  5. Wenn die CertificateValidationMode-Eigenschaft auf Custom gesetzt ist, weisen Sie eine Instanz der benutzerdefinierten X509CertificateValidator-Klasse zur CustomCertificateValidator-Eigenschaft zu.

  6. Wenn CertificateValidationMode auf ChainTrust oder PeerOrChainTrust eingestellt ist, legen Sie die RevocationMode-Eigenschaft auf einen entsprechenden Wert aus der X509RevocationMode-Enumeration fest. Beachten Sie, dass der Sperrmodus nicht im PeerTrust-Validierungsmodus oder im Custom-Validierungsmodus verwendet wird.

  7. Weisen Sie, sofern erforderlich, eine Instanz einer benutzerdefinierten SamlSerializer-Klasse zur SamlSerializer-Eigenschaft zu. Ein benutzerdefiniertes SAML-Serialisierungsprogramm (Security Assertions Markup Language) wird benötigt, z. B. zum Analysieren von benutzerdefinierten SAML-Assertionen.

So legen Sie die Eigenschaften von IssuedTokenServiceCredential in der Konfiguration fest

  1. Erstellen Sie ein <issuedTokenAuthentication><-Element als untergeordnetes Element eines serviceCredentials>-Elements.

  2. Legen Sie das allowUntrustedRsaIssuers-Attribut des <issuedTokenAuthentication>-Elements auf true fest, wenn die Authentifizierung ein selbst ausgestelltes Token ist, wie z. B. eine CardSpace-Karte.

  3. Erstellen Sie ein <knownCertificates><issuedTokenAuthentication>-Element als untergeordnetes Element des -Elements.

  4. Erstellen Sie null oder mehr <add><knownCertificates>-Elemente als untergeordnete Elemente des storeLocation-Elements, und geben Sie mithilfe der storeName, dem x509FindType-Attribut, dem findValue-Attribut und dem -Attribut an, wie das Zertifikat zu finden ist.

  5. Legen Sie ggf. das samlSerializer-Attribut des <issuedTokenAuthentication>-Elements auf den Typnamen der benutzerdefinierten SamlSerializer-Klasse fest.

Beispiel

Im folgenden Beispiel werden die Eigenschaften von IssuedTokenServiceCredential in Code festgelegt.

' 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
// 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;
}

Damit ein Verbunddienst einen Client authentifizieren kann, muss Folgendes für das ausgestellte Token zutreffen:

  • Wenn die digitale Signatur des ausgestellten Tokens einen RSA-Sicherheitsschlüsselbezeichner verwendet, muss die AllowUntrustedRsaIssuers-Eigenschaft true lauten.

  • 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.

  • 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. Weitere Informationen über zur Validierung des X.509-Zertifikats finden Sie unter Verwenden von Zertifikaten.

Durch Festlegen von CertificateValidationMode auf PeerTrust würde beispielsweise jedes ausgestellte Token, dessen Signaturzertifikat im TrustedPeople-Zertifikatspeicher abgelegt ist, authentifiziert werden. Legen Sie in diesem Fall die TrustedStoreLocation-Eigenschaft entweder auf CurrentUser oder auf LocalMachine fest. Sie können andere Modi auswählen, einschließlich Custom. Bei Auswahl von Custom müssen Sie eine Instanz der X509CertificateValidator-Klasse zur CustomCertificateValidator-Eigenschaft zuweisen. Das benutzerdefinierte Validierungssteuerelement kann Zertifikate mit allen beliebigen Kriterien überprüfen. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen eines Dienstes, der ein benutzerdefiniertes Zertifikats-Validierungssteuerelement verwendet.

Siehe auch

Aufgaben

Verbundbeispiel
Vorgehensweise: Deaktivieren sicherer Sitzungen auf einer WSFederationHttpBinding
Vorgehensweise: Erstellen einer WSFederationHttpBinding
Vorgehensweise: Erstellen eines Verbundclients

Konzepte

Verbund
Verbund und Vertrauenswürdigkeit
Verwenden von Zertifikaten
SecurityBindingElement-Authentifizierungsmodi