ClaimsPrincipalPermission 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
ClaimsAuthorizationManager 구현을 통해 리소스에 대한 액세스 권한이 활성 보안 주체에 부여되어야 하는지를 결정하는 권한을 나타냅니다. 이 클래스는 상속될 수 없습니다.
public ref class ClaimsPrincipalPermission sealed : System::Security::IPermission, System::Security::Permissions::IUnrestrictedPermission
[System.Serializable]
public sealed class ClaimsPrincipalPermission : System.Security.IPermission, System.Security.Permissions.IUnrestrictedPermission
[<System.Serializable>]
type ClaimsPrincipalPermission = class
interface IPermission
interface ISecurityEncodable
interface IUnrestrictedPermission
Public NotInheritable Class ClaimsPrincipalPermission
Implements IPermission, IUnrestrictedPermission
- 상속
-
ClaimsPrincipalPermission
- 특성
- 구현
예제
다음 예제를 사용 하 여 리소스를 보호 하는 방법을 보여 줍니다 합니다 Demand 메서드를 CheckAccess 메서드를 또는 ClaimsPrincipalPermissionAttribute 선언 합니다. 각각의 경우 구성 된 ClaimsAuthorizationManager 가 계산 된 지정 된 리소스 및 작업에 대 한 현재 보안 주체를 호출 합니다. 현재 보안 주체는 지정된 된 리소스에서 지정된 된 작업에 대 한 권한이 없는 경우는 SecurityException throw 되 고, 그렇지 않으면 실행이 진행 됩니다.
using System;
using System.IdentityModel.Services;
using System.Security.Claims;
using System.Security.Permissions;
using System.Threading;
namespace ClaimsBasedAuthorization
{
/// <summary>
/// Program illustrates using Claims-based authorization
/// </summary>
class Program
{
static void Main(string[] args)
{
//
// Method 1. Simple access check using static method.
// Expect this to be most common method.
//
ClaimsPrincipalPermission.CheckAccess("resource", "action");
//
// Method 2. Programmatic check using the permission class
// Follows model found at http://msdn.microsoft.com/library/system.security.permissions.principalpermission.aspx
//
ClaimsPrincipalPermission cpp = new ClaimsPrincipalPermission("resource", "action");
cpp.Demand();
//
// Method 3. Access check interacting directly with the authorization manager.
//
ClaimsAuthorizationManager am = new ClaimsAuthorizationManager();
am.CheckAccess(new AuthorizationContext((ClaimsPrincipal)Thread.CurrentPrincipal, "resource", "action"));
//
// Method 4. Call a method that is protected using the permission attribute class
//
ProtectedMethod();
Console.WriteLine("Press [Enter] to continue.");
Console.ReadLine();
}
//
// 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 표시를 사용자 지정 클레임 권한 부여를 사용 하는 데 필요한 최소 구성을 사용 하 여 관리자는 ClaimsPrincipalPermission 클래스입니다. 최소한 요소에서 system.identityModel
및 system.identityModel.services
섹션 <configSection>
을 모두 선언한 다음 기본 ID 구성 아래의 claimsAuthorizationManager> 요소에서< 권한 부여 관리자를 지정해야 합니다. 이렇게 하면 권한 부여 관리자에 게 기본 페더레이션 구성에서 참조 되는 합니다. 또는 federationConfiguration> 요소의 특성에 권한 부여 관리자가 지정된 ID 구성의< 이름을 지정할 수 있습니다.identityConfigurationName
<?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>
설명
합니다 ClaimsPrincipalPermission 클래스를 사용 하 여 명령적 액세스 검사를 수행 하는 기능을 제공 합니다 ClaimsAuthorizationManager 애플리케이션에 대해 구성 된 합니다. 호출 하 여 합니다 Demand 메서드 또는 정적 CheckAccess 메서드, 클레임 인증 관리자에 대해 정의 된 권한 부여 정책에 따라 코드의 실행 경로 내에서 리소스에 대 한 보호를 제공할 수 있습니다. 선언적 액세스 검사를 사용 하 여 수행할 수는 ClaimsPrincipalPermissionAttribute 클래스입니다.
중요
ClaimsPrincipalPermission 클래스에서 구성 된 클레임 인증 관리자를 사용 하는 IdentityConfiguration 아래에서 설정 된는 FederatedAuthentication.FederationConfiguration 속성. 이 WS-페더레이션 사용 되지 않습니다; 시나리오에도 모든 경우에는 예를 들어 활성 (WCF) 웹 애플리케이션 및 콘솔 애플리케이션입니다. 클레임 권한 부여 관리자 구성에서 또는 프로그래밍 방식으로 지정할 수 있습니다. 구성 파일에서 클레임 권한 부여 관리자를 지정하려면 identityConfiguration> 요소 아래에<claimsAuthorizationManager> 요소를 설정하고< 이 ID 구성이 런타임에 의해 <로드되는 federationConfiguration> 요소(예: 특성 설정identityConfigurationName
)에서 참조되는지 확인합니다. 클레임 인증 관리자를 프로그래밍 방식으로 설정 하려면에 대 한 처리기를 제공 합니다 FederatedAuthentication.FederationConfigurationCreated 이벤트입니다.
그러나 어느 한 수준에서 제공 하는 기능 ClaimsPrincipalPermission 역할 기반 액세스 검사 (RBAC)을 통해 제공 하는 것과 비슷합니다는 PrincipalPermission 클래스는 ClaimsAuthorizationManager 활성 보안 주체를 제공한 클레임을 기반으로 하는 검사를 수행 하는 클래스입니다. 이 통해 훨씬 더 많은 세분성 보다 많은 권한을 단일 역할에 따라 일반적으로 수집 되는 위치 순수 RBAC를 통해 사용할 수 있습니다. 아마도, 무엇 보다도 클레임 기반 권한 부여 권한 코드에서 리소스에 대해 특정 작업이 필요할 수 있습니다는 클레임을 구성 하려면 백 엔드 정책 사용 될 수 있으므로 보다 효과적으로 분리할 비즈니스 논리 및 권한 부여 정책 사용 하도록 설정 합니다 엔터티를 제시 수요를 충족 하기 위해 있어야 합니다. RBAC와 같은 ClaimsPrincipalPermission 에서 파생 된 클래스에서 구현 하는 코드 액세스 보안과 달리, 사용자 기반 액세스 확인을를 수행 합니다 CodeAccessPermission 클래스 및 스택 워크를 사용 권한으로 코드의 모든 호출자에 게 부여 되어 있는지 확인 하는 데 ClaimsPrincipalPermission현재 보안 주체에만 해당 검사를 수행 합니다.
정적 CheckAccess 메서드는 지정된 된 리소스에 지정 된 작업에 대 한 액세스를 확인 합니다. 리소스 및 작업은 모두 문자열은 일반적으로 Uri입니다. 인스턴스를 초기화할 수도 ClaimsPrincipalPermission 액션 리소스 및 호출을 사용 하 여는 Demand 메서드. 생성자는만 단일 리소스 및 작업에 사용 되지만 ClaimsPrincipalPermission 개체를 통해 결합 될 수는 Union 및 Intersect 메서드. 이러한 메서드를 사용 하 여 만든 권한을 여러 리소스 작업 쌍을 포함할 수 있습니다.
두 메서드를 호출 하 여 액세스를 확인 합니다 ClaimsAuthorizationManager.CheckAccess 메서드를 사용 하 여 구성 된 클레임 인증 관리자의는 AuthorizationContext 활성 사용자 구성 (Thread.CurrentPrincipal), 리소스 및 작업. Throw를 SecurityException 현재 보안 주체는 리소스에서 작업을 수행할 권한이 없으면이 고, 그렇지 실행 됩니다.
경우는 ClaimsPrincipalPermission 여러 리소스 작업 쌍을 포함 하는 ClaimsAuthorizationManager.CheckAccess 각 권한에 포함 된 리소스 작업 쌍에 대 한 메서드가 호출 됩니다. 에 대 한 호출에 대 한 Demand 성공 하려면 활성 사용자 권한에 포함 된 리소스 작업 쌍의 모든 권한이 있어야 합니다.
생성자
ClaimsPrincipalPermission(String, String) |
ClaimsPrincipalPermission 클래스의 새 인스턴스를 만듭니다. |
메서드
CheckAccess(String, String) |
지정된 리소스에 대해 지정된 작업을 수행할 수 있는 권한이 현재 주체에 부여되었는지 여부를 확인합니다. |
Copy() |
현재 ClaimsPrincipalPermission 인스턴스의 복사본을 반환합니다. |
Demand() |
현재 인스턴스와 연결된 리소스 작업 쌍에 대한 권한이 현재 주체에 부여되었는지 여부를 확인합니다. |
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
FromXml(SecurityElement) |
지정된 XML 인코딩에서 현재 사용 권한 및 상태를 다시 생성합니다. |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
Intersect(IPermission) |
현재 권한과 지정된 권한의 교집합에 해당하는 권한을 반환합니다. |
IsSubsetOf(IPermission) |
현재 사용 권한이 지정된 사용 권한의 하위 집합인지 여부를 나타내는 값을 반환합니다. |
IsUnrestricted() |
사용 권한이 제한되지 않았는지 여부를 나타내는 값을 반환합니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
ToString() |
현재 개체를 나타내는 문자열을 반환합니다. (다음에서 상속됨 Object) |
ToXml() |
XML로 인코딩된 현재 사용 권한 및 해당 상태 형식을 반환합니다. |
Union(IPermission) |
현재 권한과 지정된 권한의 합집합에 해당하는 새 권한을 반환합니다. 현재 인스턴스 및 대상 인스턴스에 존재하는 리소스-작업 쌍을 모두 보유하는 ClaimsPrincipalPermission 개체입니다. |
적용 대상
추가 정보
.NET