0
  • glassfish 服务器上部署了两个 Web 应用程序。
  • 两个 Web 应用程序都提供 REST Web 服务。
  • 通过 glassfish 安全约束(目前是 BASIC Auth 和 file-realm)来保护对这两个 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));

谢谢!

4

1 回答 1

0

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

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

@GET
@Path("/resourceA")
public void doSomething(@HeaderParam("Authorization") String authorization) {
  // now I can call resourceB and use 'authorization'
}
于 2012-12-13T10:33:55.563 回答