Безопасность Java EE - это все или ничего. Вы должны использовать механизм аутентификации Java EE, чтобы правильно установить контекст безопасности. Как видите, EJBContext
, который вы можете получить путем инъекции, доступен только для чтения.
Единственный стандартный способ изменения контекста безопасности, который мне известен, - это использовать такие вещи, как @RunAs
(см. пример ), но он очень негибкий. Вы не можете передавать учетные данные динамически.
Существует некоторый непереносимый механизм, специфичный для контейнера, например Glassfish имеет ProgrammaticLogin
. Но даже в этом случае вам необходимо передать имя пользователя / пароль, вы не можете просто изменить Principal
на лету.
Я помню, как читал статьи, в которых объяснялось, как устанавливать контекст безопасности вручную, используя внутренний API контейнера, но он, конечно, непереносим и не поддерживается.