Glassfish 3.1.1: получение HTTP-аутентификации в RESTful Webservice - PullRequest
3 голосов
/ 25 января 2012

Я использую HTTP-аутентификацию на основе моей таблицы клиентов. После аутентификации пользователя вызывается спокойный веб-сервис. Но как я могу получить в веб-сервисе HTTP-аутентификацию (данные заголовка запроса HttpRequest)? Мой код выглядит так:

@GET
@Path("{id}") 
@Produces({"application/xml"})
public ObjectList read(@PathParam("id") Integer id) {
... //how to get here the HTTP-Username and Password?
}

Ответы [ 2 ]

3 голосов
/ 25 января 2012

Чтобы получить Principal и его роль, введите @Context SecurityContext в тело класса или во входные параметры метода.

import javax.ws.rs.core;
//
public ObjectList read(
    @PathParam("id") Integer id,
    @Context SecurityContext sc) {
    String principalUserName = sc.getUserPrincipal().getName();
    if (sc.isUserInRole("MyRole")) {
        return new MyRoleResource();
    } else {
        return new MyDefaultRoleResource();
    }
}
0 голосов
/ 25 января 2012

Добавьте больше параметров к вашему методу, например так:

import javax.ws.rs.HeaderParam;

// ...

public ObjectList read(
    @PathParam("id") Integer id,
    @HeaderParam("user-agent") String userAgent,
    @HeaderParam("X-auth-token") String authToken) ...
...