Я хочу передать информацию об аутентификации в EJB-сеансные компоненты без сохранения состояния при вызове их методов из веб-приложения Java (Wicket). Информация состоит из идентификатора пользователя и типа аутентификации (запомните cookie или пользователя / пароль) и хранится в сеансе http. Одно очевидное решение - добавить это как параметр ко всем методам EJB, но это громоздко, и я надеюсь, что существует другое решение.
Поиск JNDI-компонентов EJB выполняется через javax.naming.InitialContext # lookup (String) на веб-уровне.
Существует ли переносимый способ добавления аутентификационной информации в вызывающий контекст, чтобы она стала доступна бинам? Мне нужно, чтобы этот процесс был доступен для вызывающих абонентов как на уровне EJB (для конечной точки веб-службы), так и на веб-уровне.
Дополнительная информация
Я использую Java EE 6. CDI не используется, и я бы предпочел избежать его реализации.
Аутентификация обрабатывается веб-уровнем с компонентами без сохранения состояния, проверяющими запоминаемые cookie-файлы и комбинации пользователя и пароля. Когда посетитель впервые заходит на сайт, выполняется проверка подлинности с помощью файла cookie cookie. Когда в конечном счете требуется, пользователя просят войти с именем пользователя и паролем. Как упоминалось выше, статус аутентификации сохраняется в сеансе http. Я не использую модель безопасности Java EE, основанную на сферах, потому что я не мог понять, как этот поток аутентификации мог бы быть должным образом интегрирован.
Схема авторизации основана на динамических ролях, аналогично тому, как Facebook определяет авторизацию на основе связи между двумя пользователями и некоторыми предпочтениями. Некоторые действия также принимают во внимание тип аутентификации. Например, изменение настроек учетной записи требует пользователя / пароля, а cookie недостаточно. Из того, что я понял, стандартные группы и роли Java EE не подходят для этого требования.
Другие похожие вопросы, которые я нашел
EJB3 & Как субъект / принципал JAAS распространяется на уровень EJB из контейнера сервлета?
Управление принципом безопасности, передаваемым по вызову EJB
Связывание сущности пользователя и принципала GlassFish
Доступ к клиентскому принципалу в методе ejb
динамические роли на сервере Java EE
Надеюсь, мой вопрос достаточно ясен. Если потребуется дополнительная информация, я с удовольствием предоставлю ее.
редактировать
Исправлены ссылки. Добавить примечание о CDI.