내 모든 "거부"정책은이 이 아니며 Eclipse RCP 부분에 SecurityException
이 발생합니다. 하지만 평범한 자바 클래스 테스트에서 제대로 작동합니다 - checkPermission
은 SecurityException
을 던졌습니다.Eclipse RCP의 JAAS 정책
implies
방법으로 맞춤 정책을 사용하고 있습니다. 교장이있는 모든 과목을 거부합니다. 일부 RCP ViewPart에서 doAs
내부에서 확인이 수행됩니다.
ViewPart.
public class MyPart extends ViewPart {
public void createPartControl(Composite parent) {
Policy.setPolicy(new MyPolicy());
Subject subject = new Subject();
subject.getPrincipals().add(new Principal() {
public String getName() {
return "MyPrincipal";
}
});
Subject.doAs(subject, new PrivilegedAction<Object>() {
@Override
public Object run() {
try {
AccessController.checkPermission(new MyPerm("abc"));
}
catch(SecurityException e) {
e.printStackTrace();
}
return null;
}
});
}
}
정책 : 그 주제에 대한의 doAs를 실행하고 권한을 확인하는 교장과 주제 작성설정 내 정책을. 시험
public class MyPolicy extends java.security.Policy {
public boolean implies(ProtectionDomain domain, Permission permission) {
if (domain.getPrincipals().length == 0) {
//not inside of doAs
return true;
}
System.out.println("deny all");
return false;
}
}
단순 권한 : 교장 주제에 대한 모든 작업을 거부정책
public class MyPerm extends Permission {
public MyPerm(String name) {
super(name);
}
public boolean implies(Permission permission) {
return false;
}
public boolean equals(Object o) {
return false;
}
public int hashCode() {
return 0;
}
public String getActions() {
return null;
}
}
모두 일반 자바 클래스 테스트 및 이클립스 RCP에서, 나는 "를 볼 수 있습니다 콘솔에서 ""문자열을 모두 거부합니다. 따라서 두 가지 경우 모두 내 정책이 적용됩니다.