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:
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.
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
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.
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
.ö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).
CertificateValidationMode özelliğini sabit listesi değerlerinden X509CertificateValidationMode birine ayarlayın. Bu yalnızca kodla yapılabilir. Varsayılan değer: ChainTrust.
CertificateValidationMode Özelliği olarak Customayarlanırsa, özelliğine özel X509CertificateValidator sınıfın bir örneğini atayınCustomCertificateValidator.
CertificateValidationMode veya
PeerOrChainTrust
olarak ayarlandıysaChainTrust
, özelliğini numaralandırmadan uygun bir değere X509RevocationMode ayarlayınRevocationMode. İptal modunun veyaCustom
doğrulama modlarındaPeerTrust
kullanılmadığını unutmayın.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
Öğenin
<issuedTokenAuthentication>
alt öğesi olarak bir<serviceCredentials>
öğe oluşturun.allowUntrustedRsaIssuers
CardSpace kartı gibi kendi kendine verilen bir belirtecin kimliğini doğrulanıyorsa öğesinintrue
özniteliğini<issuedTokenAuthentication>
olarak ayarlayın.<knownCertificates>
öğesinin<issuedTokenAuthentication>
alt öğesi olarak oluşturun.öğesinin
<knownCertificates>
alt öğeleri olarak sıfır veya daha fazla<add>
öğe oluşturun ve ,storeName
,x509FindType
vefindValue
özniteliklerini kullanarak sertifikanınstoreLocation
nasıl bulunacağını belirtin.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.