Поделиться через


Утверждения и маркеры SAML

Маркеры языка SAML (Security Assertions Markup Language) являются XML-представлением утверждений. По умолчанию маркеры SAML Windows Communication Foundation (WCF) используются в сценариях федеративной безопасности в качестве выданных маркеров.

Маркеры SAML содержат операторы, которые являются набором утверждений, выполненных одной сущностью в отношении другой сущности. Например, в сценариях федеративной безопасности операторы относительно пользователя выполняются в системе службой маркеров безопасности. Служба маркеров безопасности подписывает маркер SAML, чтобы подтвердить достоверность оператора, содержащегося в маркере. Кроме того, маркер SAML связан с материалом ключа шифрования, который должен быть известен пользователю маркера SAML. Эта проверка убеждает проверяющую сторону, что на самом деле маркер SAML был выдан указанному пользователю. Например, в типичном сценарии происходит следующее.

  1. Клиент запрашивает маркер SAML у службы маркеров безопасности, проходя проверку подлинности в службе маркеров безопасности с использованием учетных данных Windows.

  2. Служба маркеров безопасности выдает маркер SAML клиенту. Маркер SAML подписан сертификатом, связанным со службой маркеров безопасности, и содержит ключ проверки, зашифрованный для целевой службы.

  3. Клиент также получает копию ключа проверки. Затем клиент представляет маркер SAML службе приложений (проверяющая сторона) и подписывает сообщение при помощи этого ключа проверки.

  4. Подпись маркера SAML указывает проверяющей стороне, что маркер выдан службой маркеров безопасности. Подпись сообщения, созданная при помощи ключа проверки, указывает проверяющей стороне, что маркер был выдан клиенту.

От Claims к SamlAttributes

В WCF операторы в маркерах SAML моделируются как объекты SamlAttribute, которые могут заполняться прямо из объектов Claim. Если у предоставляемого объекта Claim есть свойство Right равное PossessProperty, и свойство Resource принадлежит к типу String. Пример:

Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)
Claim myClaim = new Claim(
    ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
ms733083.note(ru-ru,VS.100).gifПримечание
Если в сообщениях маркеры SAML сериализуются, выдаются они службой маркеров безопасности или предоставляются клиентами службам как часть проверки подлинности, максимальный размер квоты сообщения должен быть достаточно большим, чтобы вместить маркер SAML и другие части сообщения. Как правило, по умолчанию квоты на размер сообщения являются достаточными. Впрочем, в случае большого размера маркера SAML (когда он содержит сотни утверждений), может потребоваться увеличение квот для выделения места сериализованному маркеру. Дополнительные сведения см. в разделе Вопросы безопасности для данных.

От SamlAttributes к Claims

Различные операторы в маркере SAML преобразуются в объекты IAuthorizationPolicy, которые помещаются в класс AuthorizationContext, когда в сообщении содержатся маркеры SAML. Утверждения от каждого оператора SAML возвращаются свойством ClaimSets класса AuthorizationContext и могут быть проверены на необходимость проверки подлинности и авторизации пользователя.

См. также

Задачи

Как создавать федеративный клиент
Как настраивать учетные данные службы федерации
Как создать пользовательское утверждение

Справочник

AuthorizationContext
IAuthorizationPolicy
ClaimSet

Основные понятия

Федерация
Управление утверждениями и авторизацией с помощью модели удостоверения
Утверждения и маркеры
Создание утверждений и значения ресурсов