Nasıl yapılır: Federe Bir Hizmette Kimlik Bilgilerini Yapılandırma

Windows Communication Foundation'da (WCF), federasyon hizmeti oluşturmak aşağıdaki ana yordamlardan oluşur:

  1. Veya benzer bir WSFederationHttpBinding özel bağlama yapılandırma. Uygun bağlama oluşturma hakkında daha fazla bilgi için bkz . Nasıl yapılır: WSFederation OluşturmaHttpBinding.

  2. IssuedTokenServiceCredential Hizmete sunulan verilen belirteçlerin kimliğinin nasıl doğrulandığını denetleyeni yapılandırma.

Bu konu başlığında ikinci adımla ilgili ayrıntılar sağlanır. Federasyon hizmetinin nasıl çalıştığı hakkında daha fazla bilgi için bkz . Federasyon.

Kodda IssuedTokenServiceCredential özelliklerini ayarlamak için

  1. IssuedTokenAuthentication Bir örneğe başvuru IssuedTokenServiceCredential döndürmek için sınıfının özelliğini ServiceCredentials kullanın. özelliğine sınıfının özelliğinden Credentials ServiceHostBase erişilir.

  2. AllowUntrustedRsaIssuers CardSpace kartları gibi kendi kendine verilen belirteçlerin kimlik doğrulaması yapılacaksa özelliğini true olarak ayarlayın. Varsayılan değer: false.

  3. özelliği tarafından KnownCertificates döndürülen koleksiyonu sınıfın X509Certificate2 örnekleriyle doldurun. Her örnek, hizmetin belirteçlerin kimliğini doğruladığı bir vereni temsil eder.

    Not

    özelliği tarafından döndürülen istemci tarafı koleksiyonundan ScopedCertificates farklı olarak, bilinen sertifika koleksiyonu anahtarlı bir koleksiyon değildir. Hizmet, verilen belirteci içeren iletiyi gönderen istemcinin adresinden bağımsız olarak belirtilen sertifikaların yayımladığı belirteçleri kabul eder (bu konunun ilerleyen bölümlerinde açıklanan diğer kısıtlamalara tabidir).

  4. CertificateValidationMode özelliğini sabit listesi değerlerinden X509CertificateValidationMode birine ayarlayın. Bu yalnızca kodla yapılabilir. Varsayılan değer: ChainTrust.

  5. CertificateValidationMode Özelliği olarak Customayarlanırsa, özelliğine özel X509CertificateValidator sınıfın bir örneğini atayınCustomCertificateValidator.

  6. CertificateValidationMode veya PeerOrChainTrustolarak ayarlandıysaChainTrust, özelliğini numaralandırmadan uygun bir değere X509RevocationMode ayarlayınRevocationMode. İptal modunun veya Custom doğrulama modlarında PeerTrust kullanılmadığını unutmayın.

  7. Gerekirse özel sınıfın SamlSerializer bir örneğini özelliğine atayın SamlSerializer . Örneğin, özel SAML onaylarını ayrıştırma için özel bir Güvenlik Onayları Biçimlendirme Dili (SAML) serileştiricisi gerekir.

Yapılandırmada IssuedTokenServiceCredential özelliklerini ayarlamak için

  1. Öğenin <issuedTokenAuthentication> alt öğesi olarak bir <serviceCredentials> öğe oluşturun.

  2. allowUntrustedRsaIssuers CardSpace kartı gibi kendi kendine verilen bir belirtecin kimliğini doğrulanıyorsa öğesinin true özniteliğini <issuedTokenAuthentication> olarak ayarlayın.

  3. <knownCertificates> öğesinin <issuedTokenAuthentication> alt öğesi olarak oluşturun.

  4. öğesinin <knownCertificates> alt öğeleri olarak sıfır veya daha fazla <add> öğe oluşturun ve , storeName, x509FindTypeve findValue özniteliklerini kullanarak sertifikanın storeLocationnasıl bulunacağını belirtin.

  5. Gerekirse, öğesinin samlSerializer <issuedTokenAuthentication> özniteliğini özel SamlSerializer sınıfın tür adına ayarlayın.

Örnek

Aşağıdaki örnek, koddaki bir IssuedTokenServiceCredential öğesinin özelliklerini ayarlar.

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

Federasyon hizmetinin bir istemcinin kimliğini doğrulaması için verilen belirteç hakkında aşağıdakilerin doğru olması gerekir:

  • Verilen belirtecin dijital imzası bir RSA güvenlik anahtarı tanımlayıcısı kullandığında AllowUntrustedRsaIssuers özelliği olmalıdır true.

  • Verilen belirtecin imzası bir X.509 veren seri numarası, X.509 konu anahtarı tanımlayıcısı veya X.509 parmak izi güvenlik tanımlayıcısı kullandığında, verilen belirtecin sınıfın IssuedTokenServiceCredential özelliği tarafından döndürülen koleksiyondaki bir sertifika tarafından KnownCertificates imzalanması gerekir.

  • Verilen belirteç bir X.509 sertifikası kullanılarak imzalandığında, sertifikanın bağlı olan tarafa bir olarak X509RawDataKeyIdentifierClause mı yoksa özelliğinden KnownCertificates mi alındığına bakılmaksızın, sertifikanın özelliğin değeriyle CertificateValidationMode belirtilen semantik başına doğrulanması gerekir. X.509 sertifika doğrulaması hakkında daha fazla bilgi için bkz . Sertifikalarla Çalışma.

Örneğin, olarak CertificateValidationMode PeerTrust ayarlandığında, imza sertifikası sertifika deposunda bulunan verilen tüm belirteçlerin TrustedPeople kimlik doğrulaması yapılır. Bu durumda özelliğini veya LocalMachineolarak CurrentUser ayarlayınTrustedStoreLocation. dahil olmak üzere Customdiğer modları seçebilirsiniz. Custom Seçildiğinde, özelliğine X509CertificateValidator sınıfının bir örneğini CustomCertificateValidator atamanız gerekir. Özel doğrulayıcı, sertifikaları istediği ölçütleri kullanarak doğrulayabilir. Daha fazla bilgi için bkz . Nasıl yapılır: Özel Sertifika Doğrulayıcı Kullanan Bir Hizmet Oluşturma.

Ayrıca bkz.