配置 Java 2 安全策略文件
用户可以配置 Java™ 2 安全策略文件,以将必需的许可权授予指定的 WebSphere® Application Server 企业应用程序。
开始之前
请参阅“Java 2 安全策略文件”主题,以获取 WebSphere Application Server 支持的可用策略文件列表。
WebSphere Application Server 支持两种类型的策略文件:动态策略文件和静态策略文件。静态策略文件提供缺省许可权。动态策略文件提供应用程序许可权。提供了六个动态策略文件:
策略文件名 | 描述 |
---|---|
app.policy | 包含单元中所有企业应用程序的缺省许可权。 注: app.policy 文件的更新仅适用于节点上 app.policy 文件所属的企业应用程序。
|
was.policy | 包含 WebSphere Application Server 企业应用程序的应用程序特定许可权。此文件封装在企业归档 (EAR) 文件中。 |
ra.xml | 包含 WebSphere Application Server 企业应用程序的连接器应用程序特定许可权。此文件封装在资源适配器归档 (RAR) 文件中。 |
spi.policy | 包含服务提供者接口 (SPI) 或嵌入到 WebSphere Application Server 的第三方资源的许可权。缺省内容授予每个事物。当单元需要对单元中的 SPI 进行更多保护时,小心地更新此文件。此文件适用于 resources.xml 文件中定义的所有 SPI。 |
library.policy | 包含企业应用程序的共享库的许可权。 |
filter.policy | 包含需要从单元中的 was.policy 文件和 app.policy 文件过滤的许可权列表。此过滤机制仅适用于 was.policy 和 app.policy 文件。 |
在 WebSphere Application Server 中,应用程序必须具有
was.policy 或 app.policy 文件中指定的适当线程许可权。如果不具有指定的线程许可权,那么应用程序将无法处理线程,而
WebSphere Application Server 将创建 java.security.AccessControlException
异常。app.policy 文件适用于指定的节点。如果您更改一个 app.policy 文件中的许可权,那么您必须合并其余节点上相同文件中的新线程策略。而且,如同您将线程策略添加到 app.policy 文件,那么您必须重新启动 WebSphere Application Server 以执行新许可权。但是,如果您将许可权添加到特定应用程序的 was.policy 文件,那么您无须重新启动 WebSphere Application Server。管理员必须将下列代码添加到 was.policy 或 app.policy 文件中,使应用程序能够使用线程:
grant codeBase "file:${application}" {
permission java.lang.RuntimePermission "stopThread";
permission java.lang.RuntimePermission "modifyThread";
permission java.lang.RuntimePermission "modifyThreadGroup";
};
要点: 在以下策略文件中不支持 Signed By 关键字:app.policy、spi.policy、library.policy、was.policy 和 filter.policy 文件。但是,在以下策略文件中支持关键字“Signed By”:java.policy、server.policy 和
client.policy 文件。以下文件中不支持 Java 认证和授权服务 (JAAS):app.policy、spi.policy、library.policy、was.policy 和 filter.policy 文件。但是,如果 Java 虚拟机 (JVM) 系统属性 java.security.auth.policy 指定了 JAAS 主体关键字,那么该关键字在 JAAS 策略文件中受支持。可以静态地使用
auth.policy.url.n=URL(其中 URL
为授权策略的位置)在 java.security.auth.policy
中设置授权策略文件。
过程
结果
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
示例
如果单元中的 WebSphere Application Server 企业应用程序需要许可权,那么需要更新一些动态策略文件。缺少许可权的症状是 java.security.AccessControlException 异常。缺少的许可权将在以下异常数据中列出,该数据显示为一行,但拆分为多个部分以方便您阅读。
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)
当 Java 程序接收到此异常,并且添加此许可权被认为是正当的时,请添加许可权到适当的动态策略文件。
![[IBM i]](../images/iseries.gif)
![[z/OS]](../images/ngzos.gif)
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};
为了便于说明,上几行许可权信息被分割。请在一行上输入许可权。
要确定是否添加许可权,请参阅Java 2 安全性的访问控制异常主题。