目前似乎沒有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的應用程序,我還必須執行一些更新:
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相同的修改(添加「依存關係:openam.agents」行)
我不知道它是否啓用SSO的最佳方式JBoss EAP 6/AS 7(我不是專家),但它似乎運作良好。
request.getUserPrincipal()是否適用於此方法? – jsight 2012-10-12 20:11:36
是的,但值不區分大小寫(我想它和往常一樣) – morbac 2012-11-09 13:22:02