AccessControlContext — 접근 제어 컨텍스트
AccessControlContext — 접근 제어 컨텍스트
스냅샷(특정 시점의 호출 컨텍스트)을 캡슐화하는 클래스예요. 이 컨텍스트를 사용해 현재 실행 스레드의 컨텍스트와는 다른 컨텍스트를 기준으로 접근 결정을 내릴 수 있어요. AccessController.getContext()로 현재 호출 컨텍스트의 스냅샷을 얻어 이 객체에 담아두고, 나중에 checkPermission을 호출해 그 시점의 권한 정보를 기준으로 판단할 수 있어요.
본문
이 클래스는 하나 이상의 보호 도메인(protection domain)을 담고 있어요. checkPermission을 호출하면 이 컨텍스트가 캡슐화한 도메인들을 기준으로 권한 검사를 수행해요. doPrivileged와 함께 사용하면 특정 스냅샷의 컨텍스트로 권한을 제한할 수 있어요.
public AccessControlContext(ProtectionDomain[] context)— 주어진 보호 도메인들로AccessControlContext를 만들어요.public AccessControlContext(AccessControlContext acc, DomainCombiner combiner)— 주어진 컨텍스트와DomainCombiner로 컨텍스트를 만들어요.public void checkPermission(Permission perm) throws AccessControlException— 이 컨텍스트가 캡슐화한 보호 도메인들을 기준으로 접근 요청이 허용되는지 판단해요. 거부되면AccessControlException을 던져요.public DomainCombiner getDomainCombiner()— 이 컨텍스트와 연관된DomainCombiner를 반환해요.public boolean equals(Object obj)— 이 컨텍스트가 다른 컨텍스트와 같은지 여부를 반환해요.public int hashCode()— 이 컨텍스트의 해시 코드를 반환해요.
AccessControlContext acc = AccessController.getContext();
// 다른 컨텍스트에서 이 스냅샷 기준으로 검사
acc.checkPermission(new java.io.FilePermission("/tmp/*", "read"));