我正在使用基于我的客户表的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?
}
答案 0 :(得分:3)
为了获得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();
}
}
答案 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) ...