Практическое руководство. Настройка учетных данных службы федерации
В 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. Пользовательский проверяющий элемент управления может проверять сертификаты, используя любые условия. Дополнительные сведения см. в разделе "Практическое руководство. Создание службы, которая использует настраиваемый проверяющий сертификат".
См. также
- Федерация
- Федерация и доверие
- Пример федерации
- Практическое руководство. Порядок отключения безопасных сеансов в WSFederationHttpBinding
- Практическое руководство. Создание WSFederationHttpBinding
- Практическое руководство. Создание федеративного клиента
- Работа с сертификатами
- Режимы проверки подлинности SecurityBindingElement