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


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-ответ. Текущий пользователь считывается из как HttpContextClaimsPrincipal. Затем утверждения считываются из него и записываются в ответ.

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 в и вызывает CheckAccess метод в диспетчере авторизации утвержденийAuthorizationContext. Затем диспетчер авторизации утверждений может применять авторизацию на основе входящих утверждений.

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

Вы можете получить ClaimsPrincipal экземпляр для субъекта, связанного с запросом, или субъекта, от имени которого выполняется поток, в приложении проверяющей стороны (RP), приведение свойства к Thread.CurrentPrincipalClaimsPrincipal. Утверждения, связанные с 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, Byte[])

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

WriteTo(BinaryWriter)

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

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

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