在模拟已获得 glassfish 服务器授权的用户时调用 REST 服务
Posted
技术标签:
【中文标题】在模拟已获得 glassfish 服务器授权的用户时调用 REST 服务【英文标题】:Call REST service while impersonating a user that is already authorized to the glasfish server 【发布时间】:2012-12-12 23:02:14 【问题描述】: 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】:这取决于身份验证方案,但在某些情况下,您可以考虑提取服务 A 收到的授权标头并将其传递给服务 B。这将适用于基本身份验证。
你应该可以使用@HeaderParam 来做到这一点,就像下面的 sn-p:
@GET
@Path("/resourceA")
public void doSomething(@HeaderParam("Authorization") String authorization)
// now I can call resourceB and use 'authorization'
【讨论】:
基本对我有用!你能告诉我怎么做吗?也许有一个代码示例?我找不到类似的东西。谢谢! 谢谢!这对我有用! (我还没有足够的声望来“投票”。抱歉以上是关于在模拟已获得 glassfish 服务器授权的用户时调用 REST 服务的主要内容,如果未能解决你的问题,请参考以下文章