Кажется, на данный момент нет официального агента для JBoss EAP 6.
Однако я мог бы заставить его работать с единым входом OpenAM, настроив экземпляр JBoss вручную. Чтобы сделать это, я начал с существующего jboss_v42_agent.zip, доступного на сайте загрузки forgerock. Используя файлы jars agent.jar, openssoclientsdk.jar и файлы конфигурации агента, я мог создать модуль JBoss, используя этот module.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>
Затем я должен обновить 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>
Наконец, я развернул 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 (я не эксперт), но, похоже, он работает хорошо.
person
morbac
schedule
10.08.2012