Glassfish 3.1.1:在RESTful Webservice中检索HTTP身份验证

时间:2012-01-25 15:20:12

标签: java web-services java-ee java-ee-6 jax-rs

我正在使用基于我的客户表的HTTP身份验证。用户通过身份验证后,将调用restful Web服务。但是如何在Web服务中访问HTTP-Authentication(HttpRequest的Header Data)? 我的代码如下所示:

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

2 个答案:

答案 0 :(得分:3)

为了获得Principal及其角色,请在类主体或方法输入参数中注入@C​​ontext 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();
    }
}

答案 1 :(得分:0)

为您的方法添加更多参数,如下所示:

import javax.ws.rs.HeaderParam;

// ...

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