2012-08-08 123 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