ClaimsAuthenticationManager

ClaimsAuthenticationManager позволяет выполнять преобразования утверждений, включая добавление, изменение и удаление утверждений, извлеченных из входящего маркера, до их получения приложением принимающей стороны. Таким образом обеспечивается единое место для проверки подлинности утверждений. Оно находится между ASP.NET и приложением WCF, где вы задаете вопрос: "Является ли поставщик доверенным источником для выдачи этих утверждений?"

Чтобы перехватить входящие утверждения, создайте класс, который является производным от ClaimsAuthenticationManager и реализует его единственный метод, Authenticate. Как раз перед тем как приложение проверяющей стороны получает утверждения, извлеченные из маркера, WIF вызывает этот метод и передается в коллекцию ClaimsIdentityCollection, которая содержит утверждения, извлеченные из входящего маркера. Можно изменить эту коллекцию и затем вернуть ее из метода. Затем приложение проверяющей стороны получает измененную коллекцию утверждений.

Чтобы использовать ClaimsAuthenticationManager, необходимо также добавить его в файл конфигурации приложения проверяющей стороны или задать его в ClaimsAuthenticationManager объекта ServiceConfiguration. Дополнительные сведения об объекте ServiceConfiguration см. в разделе Конфигурация.

ClaimsAuthorizationManager

ClaimsAuthorizationManager предоставляет единое место для авторизации или отклонения входящих запросов до того, как их получает приложение проверяющей стороны. Это то место, где вы задаете вопрос: "Разрешаю ли я запрашивающей стороне выполнять это действие на этом ресурсе?"

Чтобы перехватить входящие запросы, создайте класс, который является производным от ClaimsAuthorizationManager и реализует его единственный метод, CheckAccess. Параметр AuthorizationContext содержит следующие элементы:

  1. Action, коллекция Claim, которая представляет действие.

  2. Principal, IClaimsPrincipal запрашивающей стороны.

  3. Resource, коллекция Claim, которая представляет ресурс.

Обратите внимание, что AuthorizationContext.Action соответствует ClaimsPrincipalPermission.Operation, а не ClaimsPrincipalPermission.SecurityAction. AuthorizationContext.Resource соответствует ClaimsPrincipalPermission.Resource.

Чтобы использовать ClaimsAuthorizationManager, необходимо также добавить его в файл конфигурации приложения проверяющей стороны или задать его в ClaimsAuthorizationManager объекта ServiceConfiguration. Дополнительные сведения об объекте ServiceConfiguration см. в разделе Конфигурация.

Обратите внимание, что для конечных точек службы WCF ресурс, переданный ClaimsAuthorizationManager, обычно является URI конечной точки. Это верно для следующих конечных точек:

  1. Службы WCF.

  2. Службы REST, вызываемые методом POST.

  3. ASP.NET приложения с ClaimsAuthorizationModule, которые вызываются методом POST.

Это не верно для следующих конечных точек:

  1. Службы REST, вызываемые методом GET.

  2. ASP.NET приложения с ClaimsAuthorizationModule, которые вызываются методом GET.

Чтобы авторизовать или отклонить запросы, основанные на URI конечной точки, нельзя выполнять строгое сравнение строк, поскольку URI отличается для каждого запроса в зависимости от параметров запроса строки.

Также обратите внимание, что не следует создавать решения авторизации в методах асинхронного обратного вызова, поскольку ClaimsAuthorizationManager не вызывается для этих методов. Можно создавать решения авторизации в методе Beginxxx, но не в методе асинхронного обратного вызова или в методе Endxxx.

OriginalIssuer

Когда требуется приложение проверяющей стороны для создания решения, основанного на службе STS, которая первоначально выдала утверждение, можно использовать свойство OriginalIssuer. Это свойство задается службой маркеров безопасности (STS), которая выдает маркер, содержащий утверждение.

Например, предположим, что проверяющая сторона получает маркер от своей службы STS проверяющей стороны (RP-STS). Служба RP-STS в свою очередь доверяет нескольким службам STS поставщика удостоверений (IP-STS). Проверяющая сторона доверяет своей службе RP-STS, и это означает, что она также доверяет службам IP-STS. Однако проверяющая сторона должна создавать решение политики, основанное на том, содержит ли маркер утверждения, первоначально выданные службой RP-STS или одной из служб IP-STS. Свойство OriginalIssuer позволяет так делать.

Значение свойства OriginalIssuer не может проверяться криптографически. Поэтому его можно использовать для создания решений политики, но не следует использовать для создания решений безопасности.

Примечание.
Служба STS в цепочке делегирования должна сохранять значение OriginalIssuer на всех утверждениях, полученных при выдаче другого маркера, который содержит эти утверждения.