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 . Атрибут оценивает, следует ли предоставлять доступ текущему субъекту, используя логику, предоставляемую 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) |