java - 授予单一类权限

标签 java security tomcat tomcat6

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

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

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

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

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

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

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

最佳答案

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

可以制作自定义类加载器来为每个定义类创建唯一的 ProtectionDomain。 ProtectionDomains 可以静态授予每类权限,也可以创建专门的 ProtectionDomains 以允许自定义策略动态授予每类权限。

关于java - 授予单一类权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3077889/

相关文章:

java - 单根层次结构使垃圾收集器的实现变得更加容易

java - 如何在使用基于表单的 spring 安全性对 Java 应用程序进行身份验证后使用 Apache HttpClient 保留 cookie

java - 如何使用jsp页面和tomcat 8编译运行java文件

java - 如何自定义 Spring Boot 嵌入式 Tomcat 线程池?

java - Web 应用程序的单一数据库连接

java - 斐波那契数列 long[] 数组在索引 92 后抛出负数

java - 如何从 Java List<E> 获取值?

security - 我是否必须将我的盐与我的散列放在同一列中?

security - MongoDB:使用文档 ID "in public"是否安全?

tomcat - mail.jar 和 activation.jar 应该放到 CATALINA/lib 中吗?