Delen via


Procedure: Referenties configureren in een Federation Service

In Windows Communication Foundation (WCF) bestaat het maken van een federatieve service uit de volgende hoofdprocedures:

  1. Een of vergelijkbare aangepaste binding configureren WSFederationHttpBinding . Zie Een WSFederationHttpBinding maken voor meer informatie over het maken van een geschikte binding.

  2. Configureren van de IssuedTokenServiceCredential configuratie die bepaalt hoe uitgegeven tokens die aan de service worden gepresenteerd, worden geverifieerd.

In dit onderwerp vindt u meer informatie over de tweede stap. Zie Federatie voor meer informatie over hoe een federatieve service werkt.

De eigenschappen van IssuedTokenServiceCredential instellen in code

  1. Gebruik de IssuedTokenAuthentication eigenschap van de ServiceCredentials klasse om een verwijzing naar een IssuedTokenServiceCredential exemplaar te retourneren. De eigenschap wordt geopend vanuit de Credentials eigenschap van de ServiceHostBase klasse.

  2. Stel de AllowUntrustedRsaIssuers eigenschap in op true als zelf uitgegeven tokens, zoals CardSpace-kaarten, moeten worden geverifieerd. De standaardwaarde is false.

  3. Vul de verzameling die door de KnownCertificates eigenschap wordt geretourneerd, in met exemplaren van de X509Certificate2 klasse. Elk exemplaar vertegenwoordigt een verlener van waaruit de service tokens verifieert.

    Notitie

    In tegenstelling tot de verzameling aan de clientzijde die door de ScopedCertificates eigenschap wordt geretourneerd, is de verzameling bekende certificaten geen sleutelverzameling. De service accepteert de tokens die de opgegeven certificaten uitgeven, ongeacht het adres van de client dat het bericht met het uitgegeven token heeft verzonden (afhankelijk van de verdere beperkingen, die verderop in dit onderwerp worden beschreven).

  4. Stel de CertificateValidationMode eigenschap in op een van de X509CertificateValidationMode opsommingswaarden. Dit kan alleen in code. De standaardwaarde is ChainTrust.

  5. Als de CertificateValidationMode eigenschap is ingesteld op Custom, wijst u een exemplaar van de aangepaste X509CertificateValidator klasse toe aan de CustomCertificateValidator eigenschap.

  6. Als de CertificateValidationMode eigenschap is ingesteld op ChainTrust of PeerOrChainTrust, stelt u de RevocationMode eigenschap in op een geschikte waarde uit de X509RevocationMode opsomming. Houd er rekening mee dat de intrekkingsmodus niet wordt gebruikt in PeerTrust of Custom validatiemodi.

  7. Wijs indien nodig een exemplaar van een aangepaste SamlSerializer klasse toe aan de SamlSerializer eigenschap. Er is een aangepaste SAML-serialisatiefunctie (Security Assertions Markup Language) nodig, bijvoorbeeld voor het parseren van aangepaste SAML-asserties.

De eigenschappen van IssuedTokenServiceCredential instellen in de configuratie

  1. Maak een <issuedTokenAuthentication> element als onderliggend element van een <serviceCredentials> element.

  2. Stel het allowUntrustedRsaIssuers kenmerk van het <issuedTokenAuthentication> element in op true het verifiëren van een zelf uitgegeven token, zoals een CardSpace-kaart.

  3. Maak een <knownCertificates> element als een onderliggend element van het <issuedTokenAuthentication> element.

  4. Maak nul of meer <add> elementen als onderliggende elementen van het <knownCertificates> element en geef op hoe u het certificaat kunt vinden met behulp van de storeLocation, storeNameen x509FindTypefindValue kenmerken.

  5. Stel indien nodig het samlSerializer kenmerk van het <issuedTokenAuthentication> element in op de typenaam van de aangepaste SamlSerializer klasse.

Opmerking

In het volgende voorbeeld worden de eigenschappen van een IssuedTokenServiceCredential code ingesteld.

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

Als een federatieve service een client moet verifiëren, moet het volgende waar zijn over het uitgegeven token:

  • Wanneer de digitale handtekening van het uitgegeven token een RSA-beveiligingssleutel-id gebruikt, moet de AllowUntrustedRsaIssuers eigenschap zijn true.

  • Wanneer de handtekening van het uitgegeven token een serienummer van de X.509-uitgever, X.509-onderwerpsleutel-id of X.509-vingerafdrukbeveiligings-id gebruikt, moet het uitgegeven token worden ondertekend door een certificaat in de verzameling die wordt geretourneerd door de KnownCertificates eigenschap van de IssuedTokenServiceCredential klasse.

  • Wanneer het uitgegeven token is ondertekend met behulp van een X.509-certificaat, moet het certificaat worden gevalideerd volgens de semantiek die is opgegeven door de waarde van de CertificateValidationMode eigenschap, ongeacht of het certificaat is verzonden naar de relying party als een X509RawDataKeyIdentifierClause of is verkregen uit de KnownCertificates eigenschap. Zie Werken met certificaten voor meer informatie over X.509-certificaatvalidatie.

Als u bijvoorbeeld het CertificateValidationMode certificaat instelt om PeerTrust een uitgegeven token te verifiëren waarvan het handtekeningcertificaat zich in het TrustedPeople certificaatarchief bevindt. In dat geval stelt u de TrustedStoreLocation eigenschap in op of LocalMachineCurrentUser . U kunt andere modi selecteren, waaronder Custom. Wanneer Custom deze optie is geselecteerd, moet u een exemplaar van de X509CertificateValidator klasse toewijzen aan de CustomCertificateValidator eigenschap. De aangepaste validator kan certificaten valideren met behulp van criteria die het leuk vindt. Zie Instructies voor meer informatie : Een service maken die gebruikmaakt van een validator voor aangepaste certificaten.

Zie ook