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

Маркеры языка разметки утверждений безопасности (SAML) — это 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. Рассмотрим пример.

Claim myClaim = new Claim(
    ClaimTypes.GivenName, "Martin", Rights.PossessProperty);
SamlAttribute sa = new SamlAttribute(myClaim);
Dim myClaim As New Claim(ClaimTypes.GivenName, "Martin", _
Rights.PossessProperty)
Dim sa As New SamlAttribute(myClaim)

Примечание.

Если в сообщениях маркеры SAML сериализуются, выдаются они службой маркеров безопасности или предоставляются клиентами службам как часть проверки подлинности, максимальный размер квоты сообщения должен быть достаточно большим, чтобы вместить маркер SAML и другие части сообщения. Как правило, по умолчанию квоты на размер сообщения являются достаточными. Впрочем, в случае большого размера маркера SAML (когда он содержит сотни утверждений), может потребоваться увеличение квот для выделения места сериализованному маркеру. Дополнительные сведения см. в разделе "Вопросы безопасности для данных".

От SamlAttributes к Claims

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

См. также