JBoss AS 7: SASL не работает с настраиваемым модулем LoginModule - как распространить настраиваемый принципал и учетные данные?

У меня возникла еще одна проблема с переносом моего приложения с AS 5.1.0 на AS 7.2.0

моя архитектура выглядит так:

  • некоторые автономные клиентские приложения вызывают защищенный удаленный ejb
  • клиентские приложения, передающие настраиваемый участник и простой пароль для аутентификации
  • сервер использует собственный LoginModule (расширяет org.jboss.security.auth.spi.LdapExtLoginModule)

  • -> с использованием AS 5.1.0 все работает нормально

  • -> используя AS 7.2.0, мой пользовательский LoginModule не получает правильный принципал и пароль от вызывающего клиента

Я пытался найти решения в проектах быстрого запуска и других обсуждениях здесь и на других форумах, но у меня ничего не работает.

Если я отключу безопасность в своем EJB, все будет работать нормально (но с неаутентифицированным идентификатором).

Я предлагаю свою ошибку либо в автономной конфигурации, либо в реализации безопасности на стороне клиента, но я перепробовал все, что приходит мне в голову, но я незадолго до того, как сдаться.

Может ли кто-нибудь дать совет?

Сервер содержит EJB-проект, API-проект, JAR-проект для безопасности. Все упаковано в EAR-проект.

Клиент содержит только JAR-проект, также использующий серверные api- и security-проекты.

Я пробовал следующие конфигурации сервера:

  • собственный SecurityDomain с настраиваемым модулем LoginModule для EJB + защита удаленного коннектора со значением по умолчанию ApplicationRealm (локальная проверка подлинности)

    • remote ejb lookup works fine
    • удаленный вызов метода ejb вызывает пользовательский модуль LoginModule на стороне сервера, но отправляет неправильный принципал и пароль ($ local & random-password)
    • -> вызывает исключение EJBAccessException: JBAS013323: недопустимый пользователь
  • собственный SecurityDomain с настраиваемым LoginModule для EJB + защита удаленного коннектора с собственным Realm (jaas-аутентификация с собственным LoginModule)

    • causes exception during ejb lookup and custom LoginModule is never called (javax.naming.NamingException: Failed to connect to any server. Servers tried: [remote://localhost:4447])
  • собственный SecurityDomain с настраиваемым LoginModule для EJB + удаленный соединитель без безопасности

    • remote ejb lookup works fine
    • удаленный вызов метода ejb вызывает пользовательский модуль LoginModule на стороне сервера, но отправляет неправильный принципал и пароль (анонимный и случайный пароль)
    • -> вызывает исключение EJBAccessException: JBAS013323: недопустимый пользователь

В JBoss AS 5.1 я передаю своему основному объекту учетные данные пароля на стороне клиента следующим образом:

final SecurityClient client = SecurityClientFactory.getSecurityClient(JBossSecurityClient.class);  
client.setVmwideAssociation(true);  
client.setSimple(customPrincipal, plainPass);  
client.login();  

Это нормально работает для AS 5.1, но, похоже, игнорируется в AS 7.1.

Итак, мой вопрос в том, как правильно распространить основной объект и пароль (простой), чтобы использовать эти значения в моем LoginModule ??


person user2807139    schedule 23.09.2013    source источник


Ответы (1)


Чуть позже, но он поможет другим в подобной ситуации. JBoss 7 не поддерживает распространение безопасности ejb из коробки. Взгляните на краткое руководство ниже, в нем представлено рабочее веб-приложение, использующее удаленный EJB, защищенный доменом безопасности, веб-приложение передает аутентифицированного пользователя на сторону ejb. Есть jboss-перехватчик на стороне клиента и на сервере (они не являются перехватчиками java ee), также есть настраиваемый модуль входа в систему.

https://github.com/jboss-developer/jboss-sandbox-quickstarts/tree/master/ejb-security-propagation.

person Claudio Miranda    schedule 01.09.2014