Если пользователь не аутентифицировался в веб-модуле в Java EE, что вернет EJBContext#getCallerPrincipal()?

Для сервлета, чтобы получить Principal веб-пользователя, он позвонит HttpServletRequest#getUserPrincipal(), Согласно документам, этот метод вернет null если пользователь не аутентифицировал себя. Имеет смысл.

Если корпоративный Java-бин (EJB) хочет получить Принципала пользователя, он позвонит EJBContext#getCallerPrincipal(), Однако, согласно документам, этот метод никогда не возвращает ноль.

Так что же это возвращает?

1 ответ

Решение

Хотя я, к сожалению, не могу сослаться на какую-либо документацию о том, что именно происходит, когда EJBContext#getCallerPrincipal() вызывается для пользователя, не прошедшего проверку подлинности, я провел эксперимент с использованием Glassfish 3.1.2.2 (сборка 5). Это показывает, что getCallerPrincipal() действительно вернет Principalи тот вызов toString() или getName() этого принципала возвращает строку ANONYMOUS. Это может быть полезно знать!

Другие вопросы по тегам