PrincipalPermission 개체
역할 기반의 보안 모델은 코드 액세스 보안 모델에서 찾을 수 있는 권한 개체와 유사한 권한 개체를 지원합니다. 이 개체는 PrincipalPermission으로, 특정 Principal 클래스가 실행해야 하는 ID 및 역할을 나타냅니다. PrincipalPermission 클래스는 명령형 보안 검사와 선언적 보안 검사 모두에 사용될 수 있습니다.
PrincipalPermission 클래스를 명령형으로 구현하려면 이 클래스의 새 인스턴스를 만들고 이를 사용자가 해당 코드에 액세스하는 데 사용해야 하는 이름 및 역할로 초기화합니다. 예를 들어, 다음 코드에서는 이 개체의 새 인스턴스를 "Joan"이라는 ID와 "Teller" 역할로 초기화합니다.
String id = "Joan";
String role = "Teller";
PrincipalPermission principalPerm = new PrincipalPermission(id, role);
Dim id As String = "Joan"
Dim role As String = "Teller"
Dim principalPerm As New PrincipalPermission(id, role)
PrincipalPermissionAttribute 클래스를 사용하여 유사한 권한을 선언형으로 만들 수 있습니다. 다음 코드에서는 선언형으로 ID는 "Joan"으로, 역할은 "Teller"로 초기화합니다.
[PrincipalPermissionAttribute(SecurityAction.Demand, Name = "Joan", Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Name := "Joan", Role := "Teller")>
보안 검사를 수행할 때 지정된 ID와 역할이 모두 일치해야만 검사에 성공할 수 있습니다. 그러나 PrincipalPermission 개체를 만들 때 null인 ID 문자열을 전달하여 해당 보안 주체의 ID가 무엇이든 될 수 있음을 나타낼 수 있습니다. 마찬가지로, 값이 null인 역할 문자열을 전달하면 해당 보안 주체가 어떠한 역할이든 될 수 있거나 역할이 없어도 됩니다. 선언적 보안의 경우 둘 중 한 속성을 생략하면 동일한 결과를 얻을 수 있습니다. 예를 들어, 다음 코드에서는 PrincipalPermissionAttribute를 사용하여 보안 주체가 어떤 이름이든 가질 수 있지만 역할은 반드시 금전 출납 계원(teller)이어야 함을 선언형으로 나타냅니다.
[PrincipalPermissionAttribute(SecurityAction.Demand, Role = "Teller")]
<PrincipalPermissionAttribute(SecurityAction.Demand, Role := "Teller")>