У меня возникла еще одна проблема с переносом моего приложения с 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 ??