JAAS и авторизация веб-сервиса: получить зарегистрированного пользователя - PullRequest
1 голос
/ 23 октября 2019

У меня есть приложение JSF, которое выполняет вход через JAAS. Работает нормально.

Теперь моя страница вызывает веб-сервис REST. Мне нужно знать, кто сделал запрос.

В заголовке запроса у меня есть:

Cookie = JSESSIONID=XBHZuYnzgkGyQSR8kBLNSks_s7nuXAMli7Gp-9Mn.dlicitra; _ga=GA1.1.1590792307.1560863707

Веб-сервис реализован в EJB без сохранения состояния. Метод:

@Path(value = "myservice/{id}")
@GET
@Produces(value = "application/json")
public List<Records> getServices(
        @HeaderParam(value = "Cookie") String cookie,
        @PathParam(value = "id") Long id){
    return ... ;
}

Как получить зарегистрированного пользователя из строки cookie ?

1 Ответ

1 голос
/ 05 ноября 2019

Как объяснено в комментарии, вместо того, чтобы ломать или разбирать SessionId файла cookie, я бы пошел со встроенным решением API безопасности Java EE для вставки SecurityContext в EJB,и получение userPrincipal из него:

@Context
private SecurityContext securityContext;

И в вашем методе:

Principal principal = securityContext.getUserPrincipal();

См. также:

Пост Baeldung о Java EE 8 Security API

...