Ade*_*ros 10 java permissions rmi policyfiles
如何以编程方式授予AllPermissions给RMI应用程序,而无需使用策略文件?
更新:
经过一番研究,我编写了这个自定义策略类并通过它安装Policy.setPolicy(new MyPolicy()).
现在我收到以下错误:
无效权限:(java.io.FilePermission\C:\ eclipse\plugins\org.eclipse.osgi_3.7.0.v20110613.jar read
class MyPolicy extends Policy {
@Override
public PermissionCollection getPermissions(CodeSource codesource) {
return (new AllPermission()).newPermissionCollection();
}
}
Run Code Online (Sandbox Code Playgroud)
Ade*_*ros 13
根据@EJP的建议,我调试了使用-Djava.security.debug=access并在策略文件中找到了所有需要的权限:
grant {permission java.net.SocketPermission"*:1024-","connect,resolve"; };
grant {permission java.util.PropertyPermission"*","read,write"; };
grant {permission java.io.FilePermission"<>","read"; };
但是因为我不想创建一个策略文件,我发现了一种通过扩展java.security.Policy类并在我的应用程序启动时设置策略来以编程方式复制它的方法Policy.setPolicy(new MinimalPolicy());
public class MinimalPolicy extends Policy {
private static PermissionCollection perms;
public MinimalPolicy() {
super();
if (perms == null) {
perms = new MyPermissionCollection();
addPermissions();
}
}
@Override
public PermissionCollection getPermissions(CodeSource codesource) {
return perms;
}
private void addPermissions() {
SocketPermission socketPermission = new SocketPermission("*:1024-", "connect, resolve");
PropertyPermission propertyPermission = new PropertyPermission("*", "read, write");
FilePermission filePermission = new FilePermission("<<ALL FILES>>", "read");
perms.add(socketPermission);
perms.add(propertyPermission);
perms.add(filePermission);
}
}
Run Code Online (Sandbox Code Playgroud)
class MyPermissionCollection extends PermissionCollection {
private static final long serialVersionUID = 614300921365729272L;
ArrayList<Permission> perms = new ArrayList<Permission>();
public void add(Permission p) {
perms.add(p);
}
public boolean implies(Permission p) {
for (Iterator<Permission> i = perms.iterator(); i.hasNext();) {
if (((Permission) i.next()).implies(p)) {
return true;
}
}
return false;
}
public Enumeration<Permission> elements() {
return Collections.enumeration(perms);
}
public boolean isReadOnly() {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13614 次 |
| 最近记录: |