ProtectionDomain
ProtectionDomain (보호 도메인)
지정된 Principal 집합을 대신해 실행될 때 인스턴스들에 권한 집합이 부여되는 클래스 집합을 둘러싸는 도메인의 특성을 캡슐화하는 클래스입니다.
본문
ProtectionDomain은 코드 실행 도메인의 특성을 나타냅니다. 정적 권한 집합을 생성 시점에 ProtectionDomain에 결합할 수 있으며, 그러한 권한은 현재 정책(policy)과 무관하게 도메인에 부여됩니다. 또한 동적 보안 정책을 지원하기 위해, 권한이 검사될 때마다 현재 정책이 도메인을 권한 집합에 동적으로 매핑하도록 ProtectionDomain을 구성할 수도 있습니다.
즉 도메인은 정적 권한만 가질 수도 있고(staticPermissionsOnly()가 true), 현재 정책에 동적으로 바인딩될 수도 있습니다.
ProtectionDomain이 제공하는 주요 메서드는 다음과 같습니다.
public final CodeSource getCodeSource()— 이 도메인의CodeSource를 반환합니다.public final ClassLoader getClassLoader()— 이 도메인의ClassLoader를 반환합니다.public final Principal[] getPrincipals()— 이 도메인의 Principal 배열을 반환합니다. 호출할 때마다 새 배열을 반환합니다.public final PermissionCollection getPermissions()— 이 도메인에 부여된 정적 권한을 반환합니다.public final boolean staticPermissionsOnly()— 이 도메인이 정적 권한만 포함하고 권한 검사 시점에 현재 정책을 확인하지 않는지 여부를 반환합니다.public boolean implies(Permission perm)— 이ProtectionDomain이Permission객체에 표현된 권한을 포함하는지 검사합니다. 평가되는 권한 집합은 도메인이 정적 권한 집합으로 구성되었는지, 동적으로 매핑되는 권한 집합에 바인딩되었는지에 따라 달라집니다.public String toString()— 이 도메인을 문자열로 변환합니다.
기본적으로 AccessController는 ProtectionDomain.implies를 호출해 코드가 권한을 가지는지 결정합니다.