IIdentity и IPrincipal
Разработчики ASP.NET и Служба WCF (Windows Communication Foundation) обычно используют интерфейсы IIdentity и IPrincipal для работы с идентификационным данным пользователя. В WIF эти интерфейсы расширены, как показано на следующей схеме.
Разработчики могут обращаться к имени пользователя, как и раньше. Они также могут обращаться к другим утверждениям для пользователя, таким как адрес электронной почты, возраст, почтовый адрес и т. д.
WIF предоставляет эти возможности с помощью
существующих методов, таких как
Thread.CurrentPrincipal
. Нужно вызвать
Thread.CurrentPrincipal
и привести возвращенный
интерфейс IPrincipal к IClaimsPrincipal.
Как показано на предыдущей схеме, IClaimsPrincipal
предоставляет набор удостоверений, каждый из которых содержит
коллекцию утверждений о субъекте, которым обычно является текущий
пользователь.
Утверждение представлено классом Claim. Этот класс имеет следующие важные свойства.
- ClaimType
представляет тип утверждения и обычно является кодом URI. Например,
адрес электронной почты представляется как
http://schemas.microsoft.com/ws/2008/06/identity/claims/email
.
- Value
содержит значение утверждения и представлен в виде строки.
Например, адрес электронной почты может представляться как
"someone@contoso.com".
- ValueType
представляет тип значения утверждения и обычно является кодом URI.
Например, адрес строковый тип представляется как
http://www.w3.org/2001/XMLSchema#string
.
- Типом значения должен быть QName в
соответствии с XML-схемой. Значение должно иметь формат
namespace#format
, чтобы служба WIF могла выдавать допустимое значение QName.
- Если пространство имен не является правильно
определенным, созданный XML-код, возможно, не удастся проверить
относительно схемы, потому что для этого пространства имен не будет
опубликованного XSD-файла.
- Тип значения по умолчанию —
http://www.w3.org/2001/XMLSchema#string
.
- Известные типы значений, которые можно
безопасно использовать, см. по адресу http://www.w3.org/2001/XMLSchema.
- Issuer
представляет собой идентификатор службы STS, которая выпустила
утверждение. Он может выражаться в виде URL-адреса службы или
имени, которое представляет службу, например
https://sts1.contoso.com/sts
. Дополнительные сведения см. в разделе IssuerNameRegistry.
- OriginalIssuer
представляет собой идентификатор службы STS, которая изначально
выпустила утверждение, независимо от количества служб маркеров
безопасности в цепочке. Он представляется в виде Issuer.
- Subject
представляет собой субъект, удостоверение которого проверяется. Он
содержит IClaimsIdentity.
- Properties
— это словарь, который позволяет разработчику предоставлять данные
приложения для передачи вместе с другими свойствами и который может
использоваться для пользовательской проверки.
Делегирование удостоверений
Важным свойством IClaimsIdentity является Actor. Это свойство позволяет выполнять делегирование удостоверений в многоуровневой системе, в которой средний уровень выступает в роли клиента, выполняющего запросы к серверной службе. Дополнительные сведения см. в разделе Сценарий делегирования удостоверения.