Anvisningar: Konfigurera autentiseringsuppgifter för en federationstjänst
I Windows Communication Foundation (WCF) består skapandet av en federerad tjänst av följande huvudsakliga procedurer:
Konfigurera en WSFederationHttpBinding eller liknande anpassad bindning. Mer information om hur du skapar en lämplig bindning finns i Så här skapar du en WSFederationHttpBinding.
Konfigurera IssuedTokenServiceCredential som styr hur utfärdade token som visas för tjänsten autentiseras.
Det här avsnittet innehåller information om det andra steget. Mer information om hur en federerad tjänst fungerar finns i Federation.
Ange egenskaperna för IssuedTokenServiceCredential i kod
IssuedTokenAuthentication Använd egenskapen för ServiceCredentials klassen för att returnera en referens till en IssuedTokenServiceCredential instans. Egenskapen nås från Credentials egenskapen för ServiceHostBase klassen.
Ange egenskapen till
true
om självutfärdade token som CardSpace-kort ska autentiserasAllowUntrustedRsaIssuers. Standardvärdet ärfalse
.Fyll i samlingen som returneras av KnownCertificates egenskapen med instanser av X509Certificate2 klassen. Varje instans representerar en utfärdare som tjänsten ska autentisera token från.
Kommentar
Till skillnad från den samling på klientsidan som returneras av ScopedCertificates egenskapen är den kända certifikatsamlingen inte en nyckelsamling. Tjänsten accepterar de token som de angivna certifikaten utfärdar oavsett adressen till klienten som skickade meddelandet som innehåller den utfärdade token (med de ytterligare begränsningarna som beskrivs senare i det här avsnittet).
Ange egenskapen CertificateValidationMode till ett av uppräkningsvärdena X509CertificateValidationMode . Detta kan endast göras i kod. Standardvärdet är ChainTrust.
Om egenskapen CertificateValidationMode är inställd på Customtilldelar du en instans av den anpassade X509CertificateValidator klassen till CustomCertificateValidator egenskapen.
CertificateValidationMode Om är inställt på
ChainTrust
ellerPeerOrChainTrust
anger du RevocationMode egenskapen till ett lämpligt värde från X509RevocationMode uppräkningen. Observera att återkallningsläget inte används iPeerTrust
ellerCustom
valideringslägen.Om det behövs tilldelar du en instans av en anpassad SamlSerializer klass till egenskapen SamlSerializer . En anpassad SAML-serialiserare (Security Assertions Markup Language) behövs, till exempel för att parsa anpassade SAML-försäkran.
Så här anger du egenskaperna för IssuedTokenServiceCredential i konfigurationen
Skapa ett
<issuedTokenAuthentication>
element som underordnat till ett<serviceCredentials>
element.allowUntrustedRsaIssuers
Ange attributet för -elementet tilltrue
om du autentiserar<issuedTokenAuthentication>
en självutfärdad token, till exempel ett CardSpace-kort.Skapa ett
<knownCertificates>
element som underordnat element.<issuedTokenAuthentication>
Skapa noll eller fler
<add>
element som underordnade element och ange hur du hittar certifikatet med hjälp av<knownCertificates>
attributenstoreLocation
,storeName
,x509FindType
ochfindValue
.Om det behövs anger du
samlSerializer
elementets<issuedTokenAuthentication>
attribut till typnamnet för den anpassade SamlSerializer klassen.
Exempel
I följande exempel anges egenskaperna för en IssuedTokenServiceCredential i kod.
// 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
För att en federerad tjänst ska kunna autentisera en klient måste följande gälla för den utfärdade token:
När den utfärdade tokens digitala signatur använder en RSA-säkerhetsnyckelidentifierare AllowUntrustedRsaIssuers måste egenskapen vara
true
.När den utfärdade tokens signatur använder ett X.509-utfärdarserienummer, X.509-ämnesnyckelidentifierare eller X.509 tumavtryckssäkerhetsidentifierare måste den utfärdade token signeras av ett certifikat i samlingen som returneras av KnownCertificates egenskapen IssuedTokenServiceCredential för klassen.
När den utfärdade token signeras med ett X.509-certifikat måste certifikatet verifiera enligt de semantik som anges av värdet CertificateValidationMode för egenskapen, oavsett om certifikatet skickades till den förlitande parten KnownCertificates som en X509RawDataKeyIdentifierClause eller hämtades från egenskapen. Mer information om X.509-certifikatverifiering finns i Arbeta med certifikat.
Om du till exempel anger till PeerTrust skulle autentisera CertificateValidationMode en utfärdad token vars signeringscertifikat finns i certifikatarkivetTrustedPeople
. I så fall anger du egenskapen TrustedStoreLocation till antingen CurrentUser eller LocalMachine. Du kan välja andra lägen, inklusive Custom. När Custom
har valts måste du tilldela en instans av X509CertificateValidator klassen till egenskapen CustomCertificateValidator . Den anpassade valideraren kan verifiera certifikat med hjälp av alla kriterier som det gillar. Mer information finns i Så här skapar du en tjänst som använder en anpassad certifikatverifierare.