在模拟已经授权使用glassfish服务器的用户时调用REST服务

时间:2012-12-12 23:02:15

标签: rest authentication glassfish client impersonation

  • 在glassfish服务器上部署了两个Web应用程序。
  • 两个Web应用程序都提供REST Web服务。
  • 通过glassfish安全约束(目前BASIC Auth和文件领域)保护对两个Web服务的访问。

假设用户正在访问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));

谢谢!

1 个答案:

答案 0 :(得分:0)

它将取决于身份验证方案,但在某些情况下,您可以考虑提取服务A收到的授权标头并将其传递给服务B.这将适用于基本身份验证。

您应该可以使用@HeaderParam来执行此操作,如下面的代码段所示:

@GET
@Path("/resourceA")
public void doSomething(@HeaderParam("Authorization") String authorization) {
  // now I can call resourceB and use 'authorization'
}