我想将 OpenAM/OpenSSO SSO 功能添加到 JBoss EAP 6 或 JBoss AS 7。这意味着我必须在 JBoss 上安装 SSO Java EE 代理。Forgerock 的 OpenAM 下载页面提供了获取以前版本 JBoss 的代理的机会,但不支持新的 JBoss EAP 6 / JBoss AS 7(目前)。
你知道这样的代理是否在某个地方可用,或者在不久的将来会可用吗?如果没有,您知道如何更改 JBoss 配置以使其与 OpenAM 一起使用吗?
我想将 OpenAM/OpenSSO SSO 功能添加到 JBoss EAP 6 或 JBoss AS 7。这意味着我必须在 JBoss 上安装 SSO Java EE 代理。Forgerock 的 OpenAM 下载页面提供了获取以前版本 JBoss 的代理的机会,但不支持新的 JBoss EAP 6 / JBoss AS 7(目前)。
你知道这样的代理是否在某个地方可用,或者在不久的将来会可用吗?如果没有,您知道如何更改 JBoss 配置以使其与 OpenAM 一起使用吗?
目前似乎没有 JBoss EAP 6 的官方代理。
但是,我可以通过手动配置我的 JBoss 实例使其与 OpenAM SSO 一起使用。为此,我从 forgerock 下载站点上现有的 jboss_v42_agent.zip 开始。使用 jars agent.jar、openssoclientsdk.jar 和代理配置文件,我可以使用这个 module.xml 构建一个 JBoss 模块:
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="openam.agents">
<resources>
<resource-root path="agent.jar"/>
<resource-root path="openssoclientsdk.jar"/>
<resource-root path="."/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.servlet.api" />
<module name="org.picketbox"/>
</dependencies>
</module>
然后我必须通过添加安全域来更新standalone.xml:
<security-domain name="AMRealm" cache-type="default">
<authentication>
<login-module code="com.sun.identity.agents.jboss.v40.AmJBossLoginModule" flag="required">
<module-option name="unauthenticatedIdentity" value="anonymous"/>
</login-module>
<login-module code="org.jboss.security.ClientLoginModule" flag="required">
<module-option name="restore-login-identity" value="true"/>
</login-module>
</authentication>
</security-domain>
最后,在通过添加一行修改 MANIFEST.MF 后,我在 JBoss 上部署了 agentapp.war:
Dependencies: openam.agents
其中 openam.agents 是我的模块的名称。
现在对于我要启用 SSO 的应用程序,我还必须执行一些更新:
web.xml:添加和节点:
<filter>
<filter-name>Agent</filter-name>
<display-name>Agent</display-name>
<description>OpenAM Tomcat Policy Agent Filter</description>
<filter-class>com.sun.identity.agents.filter.AmAgentFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Agent</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
jboss-web.xml:声明要使用的安全域
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>AMRealm</security-domain>
</jboss-web>
MANIFEST.MF:应用与 agentapp.was 相同的修改(添加“Dependencies:openam.agents”行)
我不确定这是否是在 JBoss EAP 6 / AS 7 上启用 SSO 的最佳方式(我不是专家),但它似乎运作良好。
一个想法是放置一个安装了 OpenAM 策略代理的 Apache http 服务器,以便在 Jboss 7 前面获取请求。
这称为反向代理集成。您可以在这里找到更多信息:http: //developers.sun.com/identity/reference/techart/app-integration.html 和http://docs.oracle.com/cd/E19575-01/820-3746/gjbna /index.html
使用反向代理方法,您不必关心应用程序的运行时环境。
几天前我注意到forgerock 现在已经为JBoss 7.x 发布了一个J2EE 代理,但我还没有测试它。见http://forgerock.org/openam.html