Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В Windows Communication Foundation (WCF) создание федеративной службы состоит из следующих основных процедур:
Настройка WSFederationHttpBinding или аналогичной пользовательской привязки. Дополнительные сведения о создании соответствующей привязки см. в статье "Практическое руководство. Создание WSFederationHttpBinding".
Настройка объекта IssuedTokenServiceCredential, который определяет процесс аутентификации выданных токенов, которые представляются службе.
В этом разделе описывается второй этап. Дополнительные сведения о том, как работает федеративная служба, см. в статье "Федерация".
Настройка свойств класса IssuedTokenServiceCredential в коде
Свойство IssuedTokenAuthentication класса ServiceCredentials служит для возврата ссылки на экземпляр IssuedTokenServiceCredential. Доступ к этому свойству осуществляется через свойство Credentials класса ServiceHostBase.
Установите для свойства AllowUntrustedRsaIssuers значение
true, если необходимо аутентифицировать самостоятельно выданные маркеры, такие как карточки CardSpace. Значение по умолчанию —false.Заполните коллекцию, возвращаемую свойством KnownCertificates, экземплярами класса X509Certificate2. Каждый экземпляр представляет эмитента, от которого служба будет проверять подлинность токенов.
Примечание.
В отличие от клиентской коллекции, возвращаемой свойством ScopedCertificates, коллекция известных сертификатов не является коллекцией с ключом. Служба принимает маркеры, выдаваемые заданным сертификатом, независимо от адреса клиента, который отправил сообщение с выданным маркером (на него накладываются дополнительные ограничения, описанные ниже в этом разделе).
Присвойте свойству CertificateValidationMode одно из значений перечисления X509CertificateValidationMode. Это можно сделать только в коде. Значение по умолчанию — ChainTrust.
Если свойство CertificateValidationMode имеет значение Custom, присвойте экземпляр пользовательского класса X509CertificateValidator свойству CustomCertificateValidator.
Если свойство CertificateValidationMode имеет значение
ChainTrustилиPeerOrChainTrust, присвойте свойству RevocationMode соответствующее значение из перечисления X509RevocationMode. Обратите внимание, что в режимах проверкиPeerTrustиCustom, режим отзыва не используется.Если необходимо, присвойте экземпляр пользовательского класса SamlSerializer свойству SamlSerializer. Пользовательский сериализатор языка Security Assertions Markup Language (SAML) требуется, например, для анализа пользовательских утверждений SAML.
Для задания свойств IssuedTokenServiceCredential в конфигурации
<issuedTokenAuthentication>Создайте элемент в качестве дочернего<serviceCredentials>элемента.Установите атрибут
allowUntrustedRsaIssuersэлемента<issuedTokenAuthentication>вtrue, если проверяется подлинность самовыданного токена, например, карточки CardSpace.Создайте элемент
<knownCertificates>, являющийся дочерним для элемента<issuedTokenAuthentication>.Создайте ноль или более элементов
<add>, которые являются дочерними элементами элемента<knownCertificates>, и с помощью атрибутовstoreLocation,storeName,x509FindTypeиfindValueукажите, как обнаружить сертификат.При необходимости задайте атрибут
samlSerializerэлемента<issuedTokenAuthentication>на имя типа настраиваемого класса SamlSerializer.
Пример
В следующем примере свойства объекта IssuedTokenServiceCredential задаются в коде.
// 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
Чтобы федеративная служба проверяла подлинность клиента, для выданного маркера должны выполняться следующие условия:
Если в цифровой подписи выданного маркера используется идентификатор ключа безопасности RSA, свойство AllowUntrustedRsaIssuers должно иметь значение
true.если в подписи выданного маркера используется серийный номер издателя X.509, идентификатор ключа субъекта X.509 или идентификатор безопасности отпечатка X.509, выданный маркер должен быть подписан сертификатом из коллекции, возвращаемой свойством KnownCertificates класса IssuedTokenServiceCredential;
если выданный маркер подписан с помощью сертификата X.509, этот сертификат должен осуществлять проверку на основании семантики, определенной значением свойства CertificateValidationMode, независимо от того, был ли сертификат отправлен проверяющей стороне в качестве объекта X509RawDataKeyIdentifierClause или же получен из свойства KnownCertificates. Дополнительные сведения о проверке сертификатов X.509 см. в статье "Работа с сертификатами".
Например, установка свойства CertificateValidationMode на PeerTrust аутентифицирует любой выданный токен, чьи сертификаты подписи находятся в хранилище сертификатов TrustedPeople. В этом случае задайте для свойства TrustedStoreLocation значение CurrentUser или LocalMachine. Можно выбрать и другие режимы, в том числе режим Custom. Если выбран режим Custom, необходимо присвоить экземпляр класса X509CertificateValidator свойству CustomCertificateValidator. Пользовательский валидатор может проверять сертификаты по любым критериям. Дополнительные сведения см. в разделе "Практическое руководство. Создание службы, которая использует настраиваемый проверяющий сертификат".