用户可以配置 Java 2 安全策略文件,以便将必需的许可权授予指定的 WebSphere Application Server 企业应用程序。
在您开始之前
Java 2 安全性使用若干策略文件来确定每个 Java 程序的许可权。
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 Authentication and Authorization Service(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 中设置授权策略文件。
过程
结果
必需的许可权授予指定的 WebSphere Application Server 企业应用程序。示例
如果单元中的 WebSphere Application Server 企业应用程序需要许可权,需要更新一些动态策略文件。缺少许可权的症状是 java.security.AccessControlException 异常。缺少的许可权在异常数据中列示。
java.security.AccessControlException: access denied (java.io.FilePermission C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar read)
前两行因为页面宽度而拆分为两行。请在一行上输入许可权。
当 Java 程序接收到此异常,并且添加此许可权被认为是正当的时,请添加许可权到适当的动态策略文件。
grant codeBase "file:user_client_installed_location" { permission java.io.FilePermission "C:\WebSphere\AppServer\java\jre\lib\ext\mail.jar", "read"; };
前面的许可权信息行由于其长度而被拆分为多个行。请在一行上输入许可权。
要确定是否添加许可权,请参阅访问控制异常 主题。