问题摘要:如果已安装并使用先前版本的 Service Registry(从 Java ES 2005Q4),并且现在已升级到 Java ES 5 版本的 Application Server,但未升级到 Java ES 5 版本的 Service Registry,则尝试使用先前通过 Web 控制台创建的同一证书时会导致登录失败。
解决方法:编辑 web.xml 文件和 Service Registry 的安全策略文件。
要停止 Registry 的 Application Server 域并编辑 web.xml 文件,请执行以下步骤:
更改到 Service Registry 安装目录:
在 Solaris 操作系统上:cd /opt/SUNWsoar/install
在 Linux 和 HP-UX 系统上:cd /opt/sun/SUNWsoar/install
停止 Registry 的 Application Server 域:
Ant-base/ant -f build-install.xml appserver.domain.stop
更改到目录 RegistryDomain-base /domains/registry/applications/j2ee-modules/soar/WEB-INF/。
在文本编辑器中打开文件 web.xml。
在 </web-resource-collection> 标记后的 <security-constraint> 标记内,插入以下内容:
<auth-constraint> <role-name>have.client.cert</role-name> </auth-constraint>
在 </security-constraints> 标记后,插入以下内容:
<error-page> <error-code>400</error-code> <location>/registry/thin/AuthenticateError.jsp</location> </error-page> <security-role> <description>all subjects who have client certificates</description> <role-name>have.client.cert</role-name> </security-role>
保存并关闭 web.xml 文件。
要编辑安全策略文件并重新启动域,请执行以下步骤:
更改到以下目录:
在 Solaris 操作系统上:cd /var/opt/SUNWsoar/domains/registry/config
在 Linux 和 HP-UX 系统上:cd /var/opt/sun/SUNWsoar/domains/registry/config
在文本编辑器中打开文件 server.policy。
向此文件中添加以下授权:
grant codeBase "file:${com.sun.aas.instanceRoot}/applications/j2ee-modules/soar/WEB-INF/lib/-"{
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
grant codeBase "file:${com.sun.aas.instanceRoot}/generated/jsp/j2ee-modules/soar/-" {
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
};
保存并关闭 server.policy 文件。
重新启动 Registry 的 Application Server 域:
Ant-base/ant -f build-install.xml appserver.domain.start
打开 Web 浏览器,转至 URL http://localhost:6060/soar。现在,您应可以登录和发布。