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-ответ. The current user is read from the HttpContext as a ClaimsPrincipal. Затем утверждения считываются из него, а затем записываются в ответ.

ClaimsPrincipal principal = HttpContext.Current.User as ClaimsPrincipal;  
if (null != 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), приведения Thread.CurrentPrincipal свойства в ClaimsPrincipal. Утверждения, связанные с 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)

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

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)

Выполняет сериализацию с помощью BinaryWriter.

WriteTo(BinaryWriter, Byte[])

Выполняет сериализацию с помощью BinaryWriter.

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

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