配置 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 | 包含 WebSphere Application Server中嵌入的服务提供者接口 (SPI) 或第三方资源的许可权。 缺省内容授予每个事物。 当单元需要对单元中的 SPI 进行更多保护时,小心地更新此文件。 此文件将应用于在此文件中定义的所有 SPI。resources.xml中。 |
| 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";
};重要信息: 以下策略文件中不支持 "签署者" 关键字:app.policy,spi.policy,library.policy,was.policy,和filter.policy格式的文件。 但是,以下策略文件中支持 "签署者" 关键字:java.policy,server.policy,和client.policy格式的文件。 Java 认证和授权服务 (JAAS) 在app.policy,spi.policy,library.policy,was.policy,和filter.policy格式的文件。 但是,当 JAAS 策略文件中指定了 JAAS 主体关键字时,该关键字在该策略文件中受支持。java.security.auth.policyJava 虚拟机 (JVM) 系统属性。 您可以在以下位置静态设置授权策略文件:java.security.auth.policy替换为auth.policy.url.n=URL,
where URL是授权策略的位置。
过程
结果
示例
如果单元中的 WebSphere Application Server 企业应用程序需要许可权,那么需要更新某些动态策略文件。 缺少许可权的症状是 java.security.AccessControlException 异常。 缺少的许可权将在以下异常数据中列出,该数据显示为一行,但拆分为多个部分以方便您阅读。
java.security.AccessControlException: access denied (java.io.FilePermission
${was.install.root}/java/ext/mail.jar read)当 Java 程序接收到此异常并且添加此许可权是合理的时,请向足够的动态策略文件添加许可权。
grant codeBase "file:user_client_installed_location" {
permission java.io.FilePermission
"${was.install.root}$(/)java$(/)jre$(/)lib$(/)ext$(/)mail.jar", "read";
};为了便于说明,上几行许可权信息被分割。 请在一行上输入许可权。
要决定是否添加许可权,请参阅 Java 2 安全性的访问控制异常 主题。