PrincipalPermission 클래스
선언적 및 명령적 보안 동작에 대해 정의된 언어 구문을 사용하여 활성 보안 주체(IPrincipal 참조)에 대해 확인할 수 있습니다. 이 클래스는 상속될 수 없습니다.
네임스페이스: System.Security.Permissions
어셈블리: mscorlib(mscorlib.dll)
구문
‘선언
<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public NotInheritable Class PrincipalPermission
Implements IPermission, IUnrestrictedPermission, ISecurityEncodable
‘사용 방법
Dim instance As PrincipalPermission
[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class PrincipalPermission : IPermission, IUnrestrictedPermission, ISecurityEncodable
[SerializableAttribute]
[ComVisibleAttribute(true)]
public ref class PrincipalPermission sealed : IPermission, IUnrestrictedPermission, ISecurityEncodable
/** @attribute SerializableAttribute() */
/** @attribute ComVisibleAttribute(true) */
public final class PrincipalPermission implements IPermission, IUnrestrictedPermission,
ISecurityEncodable
SerializableAttribute
ComVisibleAttribute(true)
public final class PrincipalPermission implements IPermission, IUnrestrictedPermission,
ISecurityEncodable
설명
ID 정보(사용자 이름 및 역할)를 생성자에 전달하여 활성 보안 주체의 ID가 이 정보와 일치하도록 요구하는 데 PrincipalPermission을 사용할 수 있습니다.
활성 IPrincipal과 관련 IIdentity가 일치하려면 지정된 ID와 역할이 모두 일치해야 합니다. Null 참조(Visual Basic의 경우 Nothing)을 ID 문자열로 사용하면 모든 ID와 일치시키려는 요청으로 해석되고, Null 참조(Visual Basic의 경우 Nothing)을 역할 문자열로 사용하면 모든 역할이 일치하게 됩니다. name 또는 role에 대한 Null 참조(Visual Basic의 경우 Nothing) 매개 변수를 PrincipalPermission에 전달하면 모든 IPrincipal의 ID 및 역할이 일치하게 됩니다. 또한 IIdentity가 인증된 엔터티를 나타내는지 아니면 인증되지 않은 엔터티를 나타내는지 확인만 하는 PrincipalPermission을 생성할 수도 있습니다. 이 경우 name 및 role은 무시됩니다.
대부분의 다른 사용 권한과 달리 PrincipalPermission은 CodeAccessPermission을 확장하지 않지만, IPermission 인터페이스는 구현합니다. 이는 PrincipalPermission이 코드 액세스 권한이 아니기 때문입니다. 즉 실행 중인 어셈블리의 ID에 따라 권한이 부여되지 않기 때문입니다. 대신 코드를 사용하여 코드 액세스 권한 및 코드 ID 권한에 대해 이러한 동작을 수행하는 방식과 일치하도록 현재 사용자 ID에 대해 Demand, Union, Intersect 등의 동작을 수행합니다.
중요
보안 주체 권한을 요청하려면 먼저 현재 응용 프로그램 도메인의 보안 주체 정책을 WindowsPrincipal 열거형 값으로 설정해야 합니다. 기본적으로 보안 주체 정책은 UnauthenticatedPrincipal로 설정됩니다. 보안 주체 정책을 WindowsPrincipal로 설정하지 않으면 보안 주체 권한 요청이 실패합니다. 보안 주체 권한을 요청하기 전에 다음 코드를 실행해야 합니다.
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal).
예제
다음 코드 예제에서는 관리자 역할을 하는 서로 다른 두 사용자를 나타내는 PrincipalPermission 개체를 두 개 만들고 두 개체의 합집합을 구한 다음 요청합니다. IPrincipal의 활성 구현에서 사용자 Bob의 역할을 Manager로 나타내거나 사용자 Louise의 역할을 Supervisor로 나타내는 경우에만 Demand가 성공적으로 수행됩니다.
Dim id1 As String = "Bob"
Dim role1 As String = "Manager"
Dim PrincipalPerm1 As New PrincipalPermission(id1, role1)
Dim id2 As String = "Louise"
Dim role2 As String = "Supervisor"
Dim PrincipalPerm2 As New PrincipalPermission(id2, role2)
PrincipalPerm1.Union(PrincipalPerm2).Demand()
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission PrincipalPerm1 = new PrincipalPermission(id1, role1);
String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission PrincipalPerm2 = new PrincipalPermission(id2, role2);
(PrincipalPerm1.Union(PrincipalPerm2)).Demand();
String^ id1 = "Bob";
String^ role1 = "Manager";
PrincipalPermission^ PrincipalPerm1 = gcnew PrincipalPermission( id1,role1 );
String^ id2 = "Louise";
String^ role2 = "Supervisor";
PrincipalPermission^ PrincipalPerm2 = gcnew PrincipalPermission( id2,role2 );
(PrincipalPerm1->Union( PrincipalPerm2 ))->Demand();
String id1 = "Bob";
String role1 = "Manager";
PrincipalPermission principalPerm1 = new PrincipalPermission(id1,
role1);
String id2 = "Louise";
String role2 = "Supervisor";
PrincipalPermission principalPerm2 = new PrincipalPermission(id2,
role2);
principalPerm1.Union(principalPerm2).Demand();
상속 계층 구조
System.Object
System.Security.Permissions.PrincipalPermission
스레드로부터의 안전성
이 형식의 모든 public static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
플랫폼
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.
버전 정보
.NET Framework
2.0, 1.1, 1.0에서 지원
참고 항목
참조
PrincipalPermission 멤버
System.Security.Permissions 네임스페이스
PrincipalPermissionAttribute