Udostępnij za pośrednictwem


Instrukcje: Konfigurowanie poświadczeń usługi federacyjnej

W programie Windows Communication Foundation (WCF) tworzenie usługi federacyjnej składa się z następujących głównych procedur:

  1. Konfigurowanie lub podobnego powiązania niestandardowego WSFederationHttpBinding . Aby uzyskać więcej informacji na temat tworzenia odpowiedniego powiązania, zobacz How to: Create a WSFederationHttpBinding (Instrukcje: tworzenie federacji WSFederationHttpBinding).

  2. Skonfigurowanie tego IssuedTokenServiceCredential elementu steruje sposobem uwierzytelniania wystawionych tokenów w usłudze.

Ten temat zawiera szczegółowe informacje na temat drugiego kroku. Aby uzyskać więcej informacji na temat działania usługi federacyjnej, zobacz Federacja.

Aby ustawić właściwości elementu IssuedTokenServiceCredential w kodzie

  1. IssuedTokenAuthentication Użyj właściwości ServiceCredentials klasy, aby zwrócić odwołanie do IssuedTokenServiceCredential wystąpienia. Dostęp do właściwości klasy jest uzyskiwany z Credentials właściwości ServiceHostBase .

  2. AllowUntrustedRsaIssuers Ustaw właściwość na true wartość , jeśli tokeny wystawione samodzielnie, takie jak karty CardSpace, mają być uwierzytelniane. Wartość domyślna to false.

  3. Wypełnij kolekcję zwróconą KnownCertificates przez właściwość wystąpieniami X509Certificate2 klasy. Każde wystąpienie reprezentuje wystawcę, z którego usługa będzie uwierzytelniać tokeny.

    Uwaga

    W przeciwieństwie do kolekcji po stronie klienta zwróconej ScopedCertificates przez właściwość, znana kolekcja certyfikatów nie jest kolekcją kluczy. Usługa akceptuje tokeny wystawiane przez określone certyfikaty niezależnie od adresu klienta, który wysłał komunikat zawierający wystawiony token (z zastrzeżeniem dalszych ograniczeń opisanych w dalszej części tego tematu).

  4. CertificateValidationMode Ustaw właściwość na jedną z X509CertificateValidationMode wartości wyliczenia. Można to zrobić tylko w kodzie. Wartość domyślna to ChainTrust.

  5. Jeśli właściwość jest ustawiona CertificateValidationMode na Custom, przypisz wystąpienie klasy niestandardowej X509CertificateValidator CustomCertificateValidator do właściwości .

  6. CertificateValidationMode Jeśli właściwość jest ustawiona na ChainTrust lub PeerOrChainTrust, ustaw RevocationMode właściwość na odpowiednią wartość z X509RevocationMode wyliczenia. Należy pamiętać, że tryb odwołania nie jest używany w PeerTrust trybach weryfikacji ani Custom w trybie weryfikacji.

  7. W razie potrzeby przypisz wystąpienie klasy niestandardowej SamlSerializer SamlSerializer do właściwości . Do analizowania niestandardowych asercji protokołu SAML (Security Assertions Markup Language) potrzebny jest serializator SAML, na przykład w celu analizowania niestandardowych asercji SAML.

Aby ustawić właściwości IssuedTokenServiceCredential w konfiguracji

  1. <issuedTokenAuthentication> Utwórz element jako element podrzędny <serviceCredentials> elementu.

  2. allowUntrustedRsaIssuers Ustaw atrybut <issuedTokenAuthentication> elementu na true wartość w przypadku uwierzytelniania tokenu wystawionego samodzielnie, takiego jak karta CardSpace.

  3. <knownCertificates> Utwórz element jako element podrzędny <issuedTokenAuthentication> elementu.

  4. Utwórz zero lub więcej <add> elementów jako elementów podrzędnych <knownCertificates> elementu i określ sposób lokalizowania certyfikatu storeLocationprzy użyciu atrybutów , , storeNamex509FindTypei findValue .

  5. W razie potrzeby ustaw samlSerializer atrybut <issuedTokenAuthentication> elementu na nazwę typu klasy niestandardowej SamlSerializer .

Przykład

Poniższy przykład ustawia właściwości IssuedTokenServiceCredential elementu w kodzie.

// 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 usługa federacyjna uwierzytelniła klienta, należy spełnić następujące warunki dotyczące wystawionego tokenu:

  • Gdy podpis cyfrowy wystawionego tokenu używa identyfikatora klucza zabezpieczeń RSA, AllowUntrustedRsaIssuers właściwość musi mieć wartość true.

  • Gdy podpis wystawionego tokenu używa numeru seryjnego wystawcy X.509, identyfikatora klucza podmiotu X.509 lub X.509 identyfikatora zabezpieczeń odcisku palca, wystawiony token musi być podpisany przez certyfikat w kolekcji zwróconej przez KnownCertificates właściwość IssuedTokenServiceCredential klasy.

  • Gdy wystawiony token jest podpisany przy użyciu certyfikatu X.509, certyfikat musi sprawdzić poprawność dla semantyki określonej przez wartość CertificateValidationMode właściwości, niezależnie od tego, czy certyfikat został wysłany do jednostki uzależnionej jako X509RawDataKeyIdentifierClause lub został uzyskany z KnownCertificates właściwości . Aby uzyskać więcej informacji na temat weryfikacji certyfikatu X.509, zobacz Praca z certyfikatami.

Na przykład ustawienie wartości na wartość spowoduje CertificateValidationMode PeerTrust uwierzytelnienie dowolnego wystawionego tokenu, którego certyfikat podpisywania znajduje się w TrustedPeople magazynie certyfikatów. W takim przypadku ustaw TrustedStoreLocation właściwość na CurrentUser wartość lub LocalMachine. Możesz wybrać inne tryby, w tym Custom. Po Custom wybraniu CustomCertificateValidator należy przypisać wystąpienie X509CertificateValidator klasy do właściwości . Niestandardowy moduł sprawdzania poprawności może weryfikować certyfikaty przy użyciu dowolnych kryteriów. Aby uzyskać więcej informacji, zobacz How to: Create a Service that Employs a Custom Certificate Validator (Jak utworzyć usługę, która korzysta z niestandardowego modułu sprawdzania poprawności certyfikatów).

Zobacz też