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ů:
Konfigurace WSFederationHttpBinding nebo podobné vlastní vazby Další informace o vytvoření vhodné vazby naleznete v tématu Postupy: Vytvoření WSFederationHttpBinding.
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
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.
AllowUntrustedRsaIssuers Nastavte vlastnost tak, aby
true
se ověřovaly tokeny vydané vlastním držitelem, jako jsou karty CardSpace. Výchozí hodnota jefalse
.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).
CertificateValidationMode Nastavte vlastnost na jednu z hodnot výčtuX509CertificateValidationMode. To lze provést pouze v kódu. Výchozí hodnota je ChainTrust.
CertificateValidationMode Pokud je vlastnost nastavena na Custom, pak přiřaďte instanci vlastní X509CertificateValidator třídy k CustomCertificateValidator vlastnosti.
Pokud je nastavena CertificateValidationMode na
ChainTrust
neboPeerOrChainTrust
, nastavte RevocationMode vlastnost na odpovídající hodnotu z výčtu X509RevocationMode . Všimněte si, že režim odvolání se nepoužívá vPeerTrust
režimech ověřování aniCustom
v režimu ověřování.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
Vytvoření elementu
<issuedTokenAuthentication>
jako podřízeného<serviceCredentials>
prvkuallowUntrustedRsaIssuers
Atribut elementu<issuedTokenAuthentication>
nastavte, pokudtrue
se ověřuje token vystavený vlastním držitelem, například karta CardSpace.Vytvoření elementu
<knownCertificates>
jako podřízeného<issuedTokenAuthentication>
prvkuVytvoř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
,x509FindType
afindValue
atributy.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
true
vlastnost .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ů.