2012-08-08 141 views
4

我想将OpenAM/OpenSSO SSO功能添加到JBoss EAP 6或JBoss AS 7.这意味着我必须在JBoss上安装SSO Java EE代理。 Forgerock's OpenAM download page提供了获取JBoss以前版本代理的机会,但是目前不支持新的JBoss EAP 6/JBoss AS 7。用于JBoss EAP 6/JBoss AS的OpenAM/OpenSSO代理7

你知道这样的代理商是否可以在某个地方使用,或者在短期内可以买到吗?如果不是的话,你知道如何改变JBoss配置以使其与OpenAM协同工作吗?

回答

2

目前似乎没有JBoss EAP 6的官方代理。

但是,我可以通过手动配置我的JBoss实例来使其与OpenAM SSO协同工作。要做到这一点,我开始使用现有的jboss_v42_agent.zip在forgerock下载站点上。

<?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:使用罐子agent.jar中,openssoclientsdk.jar和代理配置文件,我可以用这个module.xml建立一个JBoss模块

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

Finaly我部署的agentapp.war在JBoss已经加入了线修改的MANIFEST.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. MANIFEST.MF:应用比agentapp.was相同的修改(添加“依存关系:openam.agents”行)

我不知道它是否启用SSO的最佳方式JBoss EAP 6/AS 7(我不是专家),但它似乎运作良好。

+1

request.getUserPrincipal()是否适用于此方法? – jsight 2012-10-12 20:11:36

+0

是的,但值不区分大小写(我想它和往常一样) – morbac 2012-11-09 13:22:02

1

一个想法是把一个Apache HTTP服务器与OpenAM政策安装代理程序获取请求在JBoss中7

这被称为反向代理集成的面前。您可以在这里更多的了解: http://developers.sun.com/identity/reference/techart/app-integration.htmlhttp://docs.oracle.com/cd/E19575-01/820-3746/gjbna/index.html

使用反向代理的形式给出你不必关心应用程序的运行环境。

+0

非常感谢,似乎是一种有趣的方法,它可以避免必须在所有应用程序服务器上安装代理程序... – morbac 2012-08-28 05:21:55

1

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

+0

我们正在使用它EAP 6.2.0,它工作的很好,安装程序似乎不了解模块的EAP 6.X布局,因此它需要先将forgerock模块移动到正确的目录,但其他方式运行良好。 – 2014-04-17 06:33:58