我正在使用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中提供的示例。
答案 0 :(得分:3)
使用Java默认策略文件格式分配权限的最细粒度是每代码源(即,每个JAR或每个类目录)。作为一种变通方法,您可以将每个明显特权的类拆分为WEB-INF / lib中自己的JAR,并为该JAR授予特定权限。
可以使用自定义ClassLoader为每个defineClass创建唯一的ProtectionDomain。 ProtectionDomains可以静态授予每个类的权限,也可以创建专门的ProtectionDomains以允许自定义策略动态授予每个类的权限。