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


ClaimsPrincipal Класс

Определение

Реализация, поддерживающая IPrincipal несколько удостоверений на основе утверждений.

public ref class ClaimsPrincipal : System::Security::Principal::IPrincipal
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class ClaimsPrincipal : System.Security.Principal.IPrincipal
type ClaimsPrincipal = class
    interface IPrincipal
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type ClaimsPrincipal = class
    interface IPrincipal
Public Class ClaimsPrincipal
Implements IPrincipal
Наследование
ClaimsPrincipal
Производный
Атрибуты
Реализации

Примеры

В следующем примере извлекаются утверждения, представленные пользователем в HTTP-запросе, и записывает их в ответ HTTP. Текущий пользователь считывается в HttpContext виде ClaimsPrincipal. Затем утверждения считываются из него, а затем записываются в ответ.

if (HttpContext.Current.User is ClaimsPrincipal principal)
{
   foreach (Claim claim in principal.Claims)
   {
      Response.Write("CLAIM TYPE: " + claim.Type + "; CLAIM VALUE: " + claim.Value + "</br>");
   }
}

Комментарии

Начиная с .NET Framework 4.5, Windows Identity Foundation (WIF) и удостоверений на основе утверждений полностью интегрированы в .NET Framework. Это означает, что многие классы, представляющие субъект в .NET Framework, теперь являются производными от ClaimsPrincipal не простого IPrincipal реализации интерфейса. Помимо реализации IPrincipal интерфейса, ClaimsPrincipal предоставляет свойства и методы, которые полезны для работы с утверждениями.

ClaimsPrincipal предоставляет коллекцию удостоверений, каждая из которых является ClaimsIdentity. В обычном случае эта коллекция, доступ к которой осуществляется через Identities свойство, будет иметь только один элемент.

Введение ClaimsPrincipal в .NET 4.5 в качестве субъекта, от которого наследуется большинство основных классов, не заставляет вас изменять что-либо таким образом, в котором вы работаете с удостоверением. Однако он открывает больше возможностей и предлагает больше шансов на более точное управление доступом. Рассмотрим пример.

  • Сам код приложения может работать непосредственно с утверждениями, содержащимися в текущем субъекте, для выполнения дополнительных задач проверки подлинности, авторизации и персонализации.

  • Вы можете перенаправить ресурсы с конвейером обработки утверждений, который может работать с запросами проверки подлинности и политикой авторизации даже до достижения выполнения кода. Например, можно настроить веб-приложение или службу с помощью пользовательского диспетчера проверки подлинности утверждений, экземпляр класса, наследуемого ClaimsAuthenticationManager от класса. При настройке конвейер обработки запросов вызывает Authenticate метод в диспетчере проверки подлинности утверждений, передавая его, ClaimsPrincipal который представляет контекст входящего запроса. Затем диспетчер проверки подлинности утверждений может выполнять проверку подлинности на основе значений входящих утверждений. Он также может фильтровать, преобразовывать или добавлять утверждения в входящий набор утверждений. Например, его можно использовать для обогащения входящего набора утверждений новыми утверждениями, созданными из локального источника данных, например профиля локального пользователя.

  • Вы можете настроить веб-приложение с помощью пользовательского диспетчера авторизации утверждений, экземпляр класса, наследуемого ClaimsAuthorizationManager от класса. При настройке конвейер обработки запросов упаковывает входящий ClaimsPrincipal и AuthorizationContext вызывает CheckAccess метод в диспетчере авторизации утверждений. Затем диспетчер авторизации утверждений может применить авторизацию на основе входящих утверждений.

  • Встроенные проверки доступа к коду на основе утверждений можно выполнить, настроив приложение с помощью пользовательского диспетчера авторизации утверждений и используя ClaimsPrincipalPermission класс для выполнения императивных проверок доступа или ClaimsPrincipalPermissionAttribute выполнения декларативных проверок доступа. Проверки доступа к коду на основе утверждений выполняются встроенными, вне конвейера обработки и поэтому доступны для всех приложений до настройки диспетчера авторизации утверждений.

Вы можете получить ClaimsPrincipal экземпляр субъекта, связанного с запросом, или субъект, в котором выполняется поток, в приложении проверяющей стороны (RP), присвоив свойству ClaimsPrincipalзначение Thread.CurrentPrincipal . Утверждения, ClaimsPrincipal связанные с объектом, доступны через его Claims свойство. Свойство Claims возвращает все утверждения, содержащиеся удостоверениями, связанными с субъектом. В редких случаях, когда ClaimsPrincipal содержит несколько ClaimsIdentity экземпляров, можно использовать Identities свойство или получить доступ к основному удостоверению с помощью Identity свойства. ClaimsPrincipal предоставляет несколько методов, с помощью которых эти утверждения могут выполняться поиск и полностью поддерживают языковой интегрированный запрос (LINQ). Удостоверения можно добавить в субъект с помощью AddIdentities методов или AddIdentity методов.

Замечание

Чтобы добавить удостоверения в объект, вызывающий ClaimsPrincipalобъект должен иметь полное доверие.

По умолчанию WIF определяет приоритеты WindowsIdentity объектов при выборе основного удостоверения для возврата через Identity свойство. Это поведение можно изменить, предоставив делегату через PrimaryIdentitySelector свойство для выполнения выбора. Свойство ClaimsPrincipalSelector предоставляет аналогичные функциональные возможности для Current свойства.

В модели на основе утверждений, определяется ли субъект в указанной роли утверждениями, представленными его базовыми удостоверениями. Метод IsInRole по сути проверяет каждое удостоверение, связанное с субъектом, чтобы определить, имеет ли он утверждение с указанным значением роли. Тип утверждения (представленного его Claim.Type свойством), используемый для определения утверждений, которые следует проверять во время проверки ролей, указывается для удостоверения через его ClaimsIdentity.RoleClaimType свойство. Таким образом, утверждения, рассмотренные во время проверки ролей, могут иметь другой тип для различных удостоверений, связанных с субъектом.

Конструкторы

Имя Описание
ClaimsPrincipal()

Инициализирует новый экземпляр класса ClaimsPrincipal.

ClaimsPrincipal(BinaryReader)

Инициализирует экземпляр указанного ClaimsPrincipalBinaryReaderобъекта.

ClaimsPrincipal(IEnumerable<ClaimsIdentity>)

Инициализирует новый экземпляр ClaimsPrincipal класса с помощью указанных удостоверений утверждений.

ClaimsPrincipal(IIdentity)

Инициализирует новый экземпляр класса из указанного ClaimsPrincipal удостоверения.

ClaimsPrincipal(IPrincipal)

Инициализирует новый экземпляр класса из указанного ClaimsPrincipal субъекта.

ClaimsPrincipal(SerializationInfo, StreamingContext)
Устаревшие..

Инициализирует новый экземпляр класса из сериализованного потока, созданного ClaimsPrincipal с помощью ISerializable.

Свойства

Имя Описание
Claims

Возвращает коллекцию, содержащую все утверждения из всех удостоверений утверждений, связанных с этим субъектом утверждений.

ClaimsPrincipalSelector

Возвращает или задает делегат, используемый для выбора субъекта утверждений, возвращаемого свойством Current .

Current

Возвращает текущий субъект утверждений.

CustomSerializationData

Содержит дополнительные данные, предоставляемые производным типом. Обычно устанавливается при вызове WriteTo(BinaryWriter, Byte[]).

Identities

Возвращает коллекцию, содержащую все удостоверения утверждений, связанные с этим субъектом утверждений.

Identity

Возвращает удостоверение основных утверждений, связанное с этим субъектом утверждений.

PrimaryIdentitySelector

Возвращает или задает делегат, используемый для выбора удостоверения утверждений, возвращаемого свойством Identity .

Методы

Имя Описание
AddIdentities(IEnumerable<ClaimsIdentity>)

Добавляет указанные удостоверения утверждений в этот субъект утверждений.

AddIdentity(ClaimsIdentity)

Добавляет указанное удостоверение утверждений в этот субъект утверждений.

Clone()

Возвращает копию этого экземпляра.

CreateClaimsIdentity(BinaryReader)

Создает новое удостоверение утверждений.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
FindAll(Predicate<Claim>)

Извлекает все утверждения, которые соответствуют указанному предикату.

FindAll(String)

Извлекает все утверждения или утверждения, имеющие указанный тип утверждения.

FindFirst(Predicate<Claim>)

Извлекает первое утверждение, соответствующее указанному предикату.

FindFirst(String)

Извлекает первое утверждение с указанным типом утверждения.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetObjectData(SerializationInfo, StreamingContext)

Заполняет данные, необходимые SerializationInfo для сериализации текущего ClaimsPrincipal объекта.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
HasClaim(Predicate<Claim>)

Определяет, содержит ли любой из удостоверений утверждений, связанных с этим субъектом утверждений, утверждение, соответствующее указанному предикату.

HasClaim(String, String)

Определяет, содержит ли любой из удостоверений утверждений, связанных с этим субъектом утверждений, утверждение с указанным типом и значением.

IsInRole(String)

Возвращает значение, указывающее, находится ли сущность (пользователь), представленная этим субъектом утверждений, в указанной роли.

MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
WriteTo(BinaryWriter, Byte[])

Сериализуется с помощью .BinaryWriter

WriteTo(BinaryWriter)

Сериализуется с помощью .BinaryWriter

Применяется к

См. также раздел