2010-06-20 57 views
3

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

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

授予代码库 “文件:$ {}的catalina.home/webapps /目录ROOT/WEB-INF/- ”{ ... }

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

授予代码库 “文件:$ {}的catalina.home/webapps /目录ROOT/WEB-INF /班/ - ”{ ... }

然后我继续看到AccessControlException。我试图允许的类位于classes目录下。该webapp被部署为一个.war文件,并由Tomcat解包。

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

+0

我不确定你想用这个完成什么。通常权限是基于每个用户的基础。 – rook 2010-06-20 20:20:41

+0

我试图告诉Java SecurityManager允许某些类执行某些操作。 (请参阅http://tomcat.apache.org/tomcat-6.0-doc/security-manager-howto.html) – user371320 2010-06-20 21:42:17

回答

2

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

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