JAAS和Web服务授权:获取登录用户

问题描述 投票:0回答:1

我有一个通过JAAS登录的JSF应用程序。效果很好。

现在,我的页面调用了REST Web服务。我需要知道谁提出了请求。

在请求的标题中,我有:

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

该Web服务在无状态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字符串中获取登录用户?

java rest ejb jaas
1个回答
0
投票

正如评论中所解释的,我将不使用解析或解码cookie的SessionId的方式,而是使用Java EE的安全API内置解决方案,该解决方案将SecurityContext注入EJB,并从中获取userPrincipal:

SecurityContext

在您的方法中:

@Context
private SecurityContext securityContext;

另请参见:

Principal principal = securityContext.getUserPrincipal();

© www.soinside.com 2019 - 2024. All rights reserved.