0
我的“拒绝所有”策略确实是而不是导致Eclipse RCP部分中的SecurityException
。但在普通的java类测试中正常工作 - checkPermission
会抛出SecurityException
。Eclipse RCP中的JAAS策略
我正在使用自定义策略和implies
方法。它否认所有有主体的主体。检查在一些RCP ViewPart中的doAs
内完成。
ViewPart。设置我的政策,创作主体与主体,运行DOAS为主题,检查权限:
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;
}
});
}
}
政策。政策,否认所有行动的主题与校长:
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;
}
}
无论是在普通的Java类测试在Eclipse RCP,我可以看到“拒绝所有“控制台中的字符串。所以,我的政策适用于这两种情况。