假设用户正在访问Web应用程序A的服务。在获得授权后,服务A希望通过REST客户端调用服务B.
服务是否有办法冒充已经授权使用glasfish服务器的用户?也许像转发安全上下文或编辑标题?还有另一个过滤器吗?
@Context
private SecurityContext securityContext;
username = securityContext.getUserPrincipal().getName();
password = ???
client.addFilter(new com.sun.jersey.api.client.filter.HTTPBasicAuthFilter(username, password));
谢谢!
答案 0 :(得分:0)
它将取决于身份验证方案,但在某些情况下,您可以考虑提取服务A收到的授权标头并将其传递给服务B.这将适用于基本身份验证。
您应该可以使用@HeaderParam来执行此操作,如下面的代码段所示:
@GET
@Path("/resourceA")
public void doSomething(@HeaderParam("Authorization") String authorization) {
// now I can call resourceB and use 'authorization'
}