授予单个班级的许可

时间:2010-06-20 01:32:26

标签: java security tomcat tomcat6

我正在使用Tomcat 6上的安全策略。我已成功授予对整个webapp的权限,但是只想授予某些特定类的权限。但是,当我尝试这个时,我的doPrivileged块会收到一个AccessControlException。

因为我已成功授予更通用的代码库,所以我回到了该代码库,并在添加每个附加子目录时进行了测试。通过这种方式,我能够完成的最具体的资助是:

grant codeBase“file:$ {catalina.home} / webapps / ROOT / WEB-INF / - ”{     ...     }

如果我添加“classes /”,如:

grant codeBase“file:$ {catalina.home} / webapps / ROOT / WEB-INF / classes / - ”{     ...     }

然后我恢复看到AccessControlException。我试图允许的类位于classes目录下。 webapp部署为.war文件,并由Tomcat解压缩。

我在这里做错了什么?我打算按照Tomcat提供的catalina.policy中提供的示例。

1 个答案:

答案 0 :(得分:3)

使用Java默认策略文件格式分配权限的最细粒度是每代码源(即,每个JAR或每个类目录)。作为一种变通方法,您可以将每个明显特权的类拆分为WEB-INF / lib中自己的JAR,并为该JAR授予特定权限。

可以使用自定义ClassLoader为每个defineClass创建唯一的ProtectionDomain。 ProtectionDomains可以静态授予每个类的权限,也可以创建专门的ProtectionDomains以允许自定义策略动态授予每个类的权限。