2017-06-13 59 views
0

我有2个微型服务,我用spring引导创建。 1个微服务具有oauth2身份验证服务,另一个是oauth2资源服务器。Spring oauth2 Remotetokenservice

资源服务器使用RemoteTokenService检查访问令牌是否有效。这会起作用,当我创建一个休息端点并提供一个Principal参数时,将提供登录用户的主体。例如:

@RequestMapping(method = RequestMethod.GET, value = "/api/user/{id:[0-9]+}") 
@PreAuthorize("hasAnyAuthority('ROLE_USER')") 
public User getUser(@PathVariable("id") long id, Principal principal) { 
} 

的事情是,委托包含的用户名和登录的用户,我也需要像该用户的ID的用户信息的权限。

我不想做额外的休息电话来获取用户数据,所以我徘徊有无论如何让remotetokenservice返回更多的信息?

回答

0

RemoteTokenServices除了调用Spring Security的CheckTokenEndpoint之外什么也不做,并将映射值返回给资源服务器。

如果你想获得更多的信息,那么你必须在认证服务器中实现CheckTokenEndpoint::checkToken方法。

我们通过将spring-oauth2与JWT集成来解决您的问题。因此,身份验证服务器将生成一个访问令牌作为声明(对用户进行身份验证后),该令牌可以容纳更多可在资源服务器上使用的信息。在这种情况下,资源服务器不需要进行远程调用来检查令牌,但它会验证JWT的签名以接受索赔。