получить имя пользователя независимо от области аутентификации - PullRequest
2 голосов
/ 26 июля 2011

Я занимаюсь разработкой веб-сервиса на Java в стеке Metro и Tomcat, и моя проблема заключается в аутентификации пользователя. Я понимаю, что Tomcat может использовать несколько внешних областей аутентификации, таких как JDBCRealm или JNDIRealm, и я хочу, чтобы мои конечные пользователи настраивали установку Tomcat для своей соответствующей области.

Теперь, что мне нужно в моих методах webservice - это имя пользователя (или id, что-то уникальное), которое пользователь использовал для входа, независимо от конкретной области. Где я могу получить это? Очевидно, я до сих пор искал неправильные ключевые слова - есть ли конкретное название для концепции, которую я хочу использовать?

Заранее спасибо!

1 Ответ

2 голосов
/ 26 июля 2011

Зарегистрированный пользователь доступен по WebServiceContext#getUserPrincipal(), который возвращает экземпляр Principal, который в свою очередь имеет метод getName().

Например,

@Resource
private WebServiceContext context;

@WebMethod
public String hello() {
    Principal user = context.getUserPrincipal();
    return (user != null) ? user.getName() : "(not logged in)";
}

Это под обложками, полученными, кстати, от HttpServletRequest#getUserPrincipal().

...