OpenAM/OpenSSO agent for JBoss EAP 6 / JBoss AS 7



>我想将 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、openssoclientdk.jar 和 agent 配置文件,我可以使用这个模块构建一个 JBoss 模块.xml:

<?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>

然后.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 之后在 JBoss 上部署了 agentapp.war。MF 通过添加一行:

Dependencies: openam.agents

其中 openam.agents 是我的模块的名称。

现在,对于要为其启用 SSO 的应用程序,我还必须执行一些更新:

  1. 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>
    
  2. jboss-web.xml:声明要使用的安全域

    <?xml version="1.0" encoding="UTF-8"?>
    <jboss-web>
      <security-domain>AMRealm</security-domain>
    </jboss-web>
    
  3. 清单。MF:应用与 agentapp.was 相同的修改(添加"依赖项: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

使用反向代理 aproach,您不必关心应用程序的运行时环境。

几天前我注意到forgerock现在已经发布了JBoss 7.x的J2EE代理,但我还没有测试它。请参阅 http://forgerock.org/openam.html

最新更新