Агент OpenAM/OpenSSO для JBoss EAP 6 / JBoss AS 7

Я хочу добавить функцию единого входа OpenAM/OpenSSO в JBoss EAP 6 или JBoss AS 7. Это означает, что я должен установить агент SSO Java EE на JBoss. страница загрузки Forgerock OpenAM дает возможность получить агенты для предыдущих версий JBoss, но новый JBoss EAP 6 / JBoss AS 7 не поддерживаются (на данный момент).

Вы знаете, доступен ли такой агент где-нибудь или будет доступен в ближайшем будущем? Если нет, знаете ли вы, как изменить конфигурацию JBoss, чтобы он работал с OpenAM?


person morbac    schedule 08.08.2012    source источник


Ответы (3)


Кажется, на данный момент нет официального агента для 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, я также должен выполнить некоторые обновления:

  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 (я не эксперт), но, похоже, он работает хорошо.

person morbac    schedule 10.08.2012
comment
Работает ли request.getUserPrincipal() для вас с этим методом? - person jsight; 13.10.2012
comment
Да, но значение не чувствительно к регистру (думаю, как обычно) - person morbac; 09.11.2012

Одна из идей заключается в том, чтобы разместить HTTP-сервер Apache с установленным агентом политики OpenAM для получения запросов перед Jboss 7.

Это известно как интеграция с обратным прокси. Вы можете узнать больше здесь: http://developers.sun.com/identity/reference/techart/app-integration.html и http://docs.oracle.com/cd/E19575-01/820-3746/gjbna/index.html

Используя обратный прокси-подход, вам не нужно заботиться о среде выполнения приложения.

person marciopd    schedule 21.08.2012
comment
Большое спасибо, кажется интересным методом, который позволяет избежать установки агента на всех серверах приложений... - person morbac; 28.08.2012

Несколько дней назад я заметил, что forgerock выпустил агент J2EE для JBoss 7.x, но я еще не тестировал его. См. http://forgerock.org/openam.html.

person morbac    schedule 14.08.2013
comment
Мы используем его в EAP 6.2.0, и он работает хорошо, установщик, похоже, не понимает расположение модулей EAP 6.X, поэтому сначала требуется переместить модуль forgerock в правильный каталог, но в остальном работает хорошо. - person Joel Pearson; 17.04.2014