Если пользователь не аутентифицировался в веб-модуле в 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. Это может быть полезно знать!