Postupy: Konfigurace pověření ve službě Federation Service

Ve Windows Communication Foundation (WCF) se vytvoření federované služby skládá z následujících hlavních postupů:

  1. Konfigurace WSFederationHttpBinding nebo podobné vlastní vazby Další informace o vytvoření vhodné vazby naleznete v tématu Postupy: Vytvoření WSFederationHttpBinding.

  2. Konfigurace IssuedTokenServiceCredential , která řídí způsob ověřování vydaných tokenů prezentovaných službě.

Toto téma obsahuje podrobnosti o druhém kroku. Další informace o tom, jak federovaná služba funguje, najdete v tématu Federace.

Nastavení vlastností IssuedTokenServiceCredential v kódu

  1. IssuedTokenAuthentication ServiceCredentials Vlastnost třídy použijte k vrácení odkazu na IssuedTokenServiceCredential instanci. Tato vlastnost je přístupná z Credentials vlastnosti ServiceHostBase třídy.

  2. AllowUntrustedRsaIssuers Nastavte vlastnost tak, aby true se ověřovaly tokeny vydané vlastním držitelem, jako jsou karty CardSpace. Výchozí hodnota je false.

  3. Naplňte kolekci vrácenou KnownCertificates vlastností instancemi X509Certificate2 třídy. Každá instance představuje vystavitele, ze kterého bude služba ověřovat tokeny.

    Poznámka:

    Na rozdíl od kolekce na straně klienta vrácené ScopedCertificates vlastností není známá kolekce certifikátů kolekcí klíčů. Služba přijímá tokeny, které zadané certifikáty vydávají bez ohledu na adresu klienta, který odeslal zprávu obsahující vystavený token (s výhradou dalších omezení popsaných dále v tomto tématu).

  4. CertificateValidationMode Nastavte vlastnost na jednu z hodnot výčtuX509CertificateValidationMode. To lze provést pouze v kódu. Výchozí hodnota je ChainTrust.

  5. CertificateValidationMode Pokud je vlastnost nastavena na Custom, pak přiřaďte instanci vlastní X509CertificateValidator třídy k CustomCertificateValidator vlastnosti.

  6. Pokud je nastavena CertificateValidationMode na ChainTrust nebo PeerOrChainTrust, nastavte RevocationMode vlastnost na odpovídající hodnotu z výčtu X509RevocationMode . Všimněte si, že režim odvolání se nepoužívá v PeerTrust režimech ověřování ani Custom v režimu ověřování.

  7. V případě potřeby přiřaďte k vlastnosti instanci vlastní SamlSerializer třídy SamlSerializer . K analýze vlastních kontrolních výrazů SAML (Security Assertions Markup Language) je potřeba vlastní serializátor kontrolních výrazů SAML ( Security Assertions Markup Language).

Nastavení vlastností IssuedTokenServiceCredential v konfiguraci

  1. Vytvoření elementu <issuedTokenAuthentication> jako podřízeného <serviceCredentials> prvku

  2. allowUntrustedRsaIssuers Atribut elementu <issuedTokenAuthentication> nastavte, pokud true se ověřuje token vystavený vlastním držitelem, například karta CardSpace.

  3. Vytvoření elementu <knownCertificates> jako podřízeného <issuedTokenAuthentication> prvku

  4. Vytvořte nula nebo více <add> prvků jako podřízených prvků elementu <knownCertificates> a určete, jak najít certifikát pomocí storeLocation, storeName, x509FindTypea findValue atributy.

  5. V případě potřeby nastavte samlSerializer atribut <issuedTokenAuthentication> elementu na název typu vlastní SamlSerializer třídy.

Příklad

Následující příklad nastaví vlastnosti IssuedTokenServiceCredential v kódu.

// 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

Aby federovaná služba mohla ověřit klienta, musí být splněné následující podmínky týkající se vydaného tokenu:

  • Pokud digitální podpis vydaného tokenu používá identifikátor klíče zabezpečení RSA, AllowUntrustedRsaIssuers musí být truevlastnost .

  • Pokud podpis vystaveného tokenu používá sériové číslo vystavitele X.509, identifikátor klíče subjektu X.509 nebo identifikátor zabezpečení kryptografického otisku X.509, musí být vystavený token podepsán certifikátem v kolekci vrácenou KnownCertificates vlastností IssuedTokenServiceCredential třídy.

  • Při podepsání vystaveného tokenu pomocí certifikátu X.509 musí certifikát ověřit sémantiku určenou hodnotou CertificateValidationMode vlastnosti bez ohledu na to, zda byl certifikát odeslán předávající straně jako nebo X509RawDataKeyIdentifierClause byl získán z KnownCertificates vlastnosti. Další informace o ověřování certifikátů X.509 naleznete v tématu Práce s certifikáty.

Například nastavení CertificateValidationMode na PeerTrust ověření jakéhokoli vystaveného tokenu, jehož podpisový certifikát je v úložišti TrustedPeople certifikátů. V takovém případě nastavte TrustedStoreLocation vlastnost buď nebo CurrentUser LocalMachine. Můžete vybrat jiné režimy, včetně Custom. Při Custom výběru je nutné přiřadit instanci X509CertificateValidator třídy k CustomCertificateValidator vlastnosti. Vlastní validátor může ověřit certifikáty pomocí libovolných kritérií, která se vám líbí. Další informace naleznete v tématu Postupy: Vytvoření služby, která využívá vlastní validátor certifikátů.

Viz také