首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SecurityManager作用域

SecurityManager作用域
EN

Stack Overflow用户
提问于 2015-07-01 23:55:26
回答 1查看 64关注 0票数 0

我正在尝试写一个插件基础的SecurityManager,我想知道如何/如果我可以使权限只适用于插件目录中的插件。目前,权限适用于所有内容。

代码语言:javascript
复制
import java.security.AccessControlContext;
import java.security.AccessController;
import java.security.Permission;

public class PluginSecurityManager extends SecurityManager {

public PluginSecurityManager() {
    this.context = AccessController.getContext();
     System.setProperty("java.security.policy", "res/security/policy.txt");
}

public void checkPermission(Permission perm) {
    this.checkPermission(perm, context);
}

public AccessControlContext getContext() {
    return context;
}

private final AccessControlContext context;
}

策略文件

代码语言:javascript
复制
grant codeBase "file:/plugins/*" {
permission java.io.FilePermission "res/*", "read";
permission java.io.FilePermission "user.dir/ikaros-cache/cache.zip", "read";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
EN

回答 1

Stack Overflow用户

发布于 2015-07-02 01:01:13

通过将检查传递给AccessControllerSecurityManager已经使用了策略文件。

几乎没有理由将SecurityManager子类化。您需要权限才能执行此操作,因此您对AccessController.getContext的调用可能会返回有效的完全权限。

如果插件需要完全权限,则通过反射来禁止访问检查。

编辑:哦,我还看到你在构造了一个SecurityManager初始化相关的全局状态之后,似乎正在改变一个系统属性。一般来说,这类东西不会被重读。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31166203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档