使用Spring OAuth 2.0的自定义主体和范围

时间:2018-09-30 22:46:47

标签: spring spring-boot spring-security oauth spring-security-oauth2

我正在使用SpringBoot 2.0.5和Spring Security OAuth来实现OAuth 2.0服务器和一组客户端微服务。

在AuthServer中:

  1. 我已经实现了UserDetailsService,所以我可以提供我的自定义扩展主体。
  2. 对于userInfoUri控制器端点,我将用户(我的委托人)和权限作为映射返回。

在客户端中

  1. 我已实现PrincipalExtractor来提取和创建我的自定义主体。
  2. 对于我需要主体的每种方法,我使用以下表示法:

    public List<Message> listMessages(@AuthenticationPrincipal MyPrincipal user)

这可行(我希望这是正确的方法),但是现在我遇到了使用范围保护方法的问题。

例如,如果我想拥有一个只能由另一台服务器访问的控制器方法(使用client_credentials),则可以使用以下注释标记该方法:

@PreAuthorize("#oauth2.hasScope('trust')")

但是这导致访问错误,因为我认为范围没有被转移。我已将范围添加到userInfoUri端点,但是不确定在客户端需要做什么,以便选择范围。

非常感谢任何指针或示例代码。

0 个答案:

没有答案