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


ClaimsPrincipalPermissionAttribute Класс

Определение

Представляет атрибут безопасности, используемый для декларативного назначения проверок доступа на основе логики, предоставленной ClaimsAuthorizationManager экземпляром в текущем контексте приложения. Этот класс не может быть унаследован.

public ref class ClaimsPrincipalPermissionAttribute sealed : System::Security::Permissions::CodeAccessSecurityAttribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method | System.AttributeTargets.Property, AllowMultiple=true)]
public sealed class ClaimsPrincipalPermissionAttribute : System.Security.Permissions.CodeAccessSecurityAttribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method | System.AttributeTargets.Property, AllowMultiple=true)>]
type ClaimsPrincipalPermissionAttribute = class
    inherit CodeAccessSecurityAttribute
Public NotInheritable Class ClaimsPrincipalPermissionAttribute
Inherits CodeAccessSecurityAttribute
Наследование
ClaimsPrincipalPermissionAttribute
Атрибуты

Примеры

В следующем примере показано, как защитить метод, декорируя его атрибутом ClaimsPrincipalPermissionAttribute . Атрибут оценивает, следует ли предоставлять доступ текущему субъекту, используя логику, предоставляемую ClaimsAuthorizationManager экземпляром в контексте приложения. Если текущий субъект не авторизован для указанного действия указанного ресурса, SecurityException создается исключение; в противном случае выполняется выполнение.


//
// Declarative access check using the permission class. The caller must satisfy both demands.
//
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "resource", Operation = "action")]
[ClaimsPrincipalPermission(SecurityAction.Demand, Resource = "resource1", Operation = "action1")]
static void ProtectedMethod()
{
}

Следующий XML-код показывает минимальную конфигурацию, необходимую для использования пользовательского диспетчера авторизации утверждений с классом ClaimsPrincipalPermissionAttribute . Необходимо объявить system.identityModelsystem.identityModel.services как минимум разделы элемента <configSection> , а затем указать диспетчер авторизации в <элементе claimsAuthorizationManager> в конфигурации удостоверения по умолчанию. Это гарантирует, что диспетчер авторизации ссылается на конфигурацию федерации по умолчанию. Кроме того, можно указать имя конфигурации удостоверения, в которой диспетчер авторизации указан в identityConfigurationName атрибуте <элемента federationConfiguration> .

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <!-- WIF configuration sections -->
    <section name="system.identityModel" type="System.IdentityModel.Configuration.SystemIdentityModelSection, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <section name="system.identityModel.services" type="System.IdentityModel.Services.Configuration.SystemIdentityModelServicesSection, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </configSections>

  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

  <system.identityModel>
    <identityConfiguration>
      <claimsAuthorizationManager type ="MyClaimsAuthorizationManager.MyClaimsAuthorizationManager, MyClaimsAuthorizationManager"/>
    </identityConfiguration>
  </system.identityModel>

</configuration>

Комментарии

Используется ClaimsPrincipalPermissionAttribute для декларативного запроса проверки доступа с помощью настроенного ClaimsAuthorizationManager.

Необходимо указать одно из SecurityAction значений, a Resource и в ClaimsPrincipalPermissionAttribute объявленииOperation. Operation Свойства Resource указывают ресурс и действие, для которого текущий субъект (Thread.CurrentPrincipal) должен быть авторизован для продолжения выполнения. Если текущий субъект не авторизован для выполнения указанного действия (операции) на указанном ресурсе, SecurityException создается исключение.

Это важно

Класс ClaimsPrincipalPermissionAttribute использует диспетчер авторизации утверждений, настроенный IdentityConfiguration заданным в свойстве FederatedAuthentication.FederationConfiguration . Это верно во всех случаях, даже в сценариях, когда WS-Federation не используется; Например, активные веб-приложения WCF и консольные приложения. Диспетчер авторизации утверждений можно указать в конфигурации или программно. Чтобы указать диспетчер авторизации утверждений в файле конфигурации, задайте <элемент claimsAuthorizationManager> в <элементе identityConfiguration и убедитесь, что эта конфигурация удостоверения ссылается на элемент federationConfiguration>>, загруженный средой выполнения (например, задав атрибут).<identityConfigurationName Чтобы задать диспетчер авторизации утверждений программным способом, предоставьте обработчик события FederatedAuthentication.FederationConfigurationCreated .

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

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

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

Свойства

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

Возвращает или задает действие по обеспечению безопасности.

(Унаследовано от SecurityAttribute)
Operation

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

Resource

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

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)
Unrestricted

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

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

Методы

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

Создает новый экземпляр класса, основанного ClaimsPrincipalPermission на текущем экземпляре.

Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

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

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

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

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

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

(Унаследовано от Attribute)
MemberwiseClone()

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

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

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

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

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

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

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

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

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

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