我正在使用SpringBoot 2.0.5和Spring Security OAuth来实现OAuth 2.0服务器和一组客户端微服务。
在AuthServer中:
UserDetailsService
,所以我可以提供我的自定义扩展主体。 userInfoUri
控制器端点,我将用户(我的委托人)和权限作为映射返回。在客户端中
PrincipalExtractor
来提取和创建我的自定义主体。对于我需要主体的每种方法,我使用以下表示法:
public List<Message> listMessages(@AuthenticationPrincipal MyPrincipal user)
这可行(我希望这是正确的方法),但是现在我遇到了使用范围保护方法的问题。
例如,如果我想拥有一个只能由另一台服务器访问的控制器方法(使用client_credentials),则可以使用以下注释标记该方法:
@PreAuthorize("#oauth2.hasScope('trust')")
但是这导致访问错误,因为我认为范围没有被转移。我已将范围添加到userInfoUri
端点,但是不确定在客户端需要做什么,以便选择范围。
非常感谢任何指针或示例代码。