Spring OAUTH2 JWT将用户权限映射到作用域

时间:2017-08-15 08:55:29

标签: json web-services jwt access-token spring-security-oauth2

我有一个关于我的用户权限映射到Spring JWT中的访问令牌范围的问题,实际上,当我将所有用户权限映射到accesstoken范围时,如下所示:

public class AuthorityTokenEnhancer implements TokenEnhancer {
    @Override
    public OAuth2AccessToken enhance(OAuth2AccessToken accessToken, OAuth2Authentication authentication) {
        User user = (User) authentication.getPrincipal();
        final ImmutableMap<String, Object> additionalInfo = ImmutableMap
                .builder()
                .put("authorities", user.getAuthorities())
                .build();
        ((DefaultOAuth2AccessToken) accessToken).setAdditionalInformation(additionalInfo);
        ((DefaultOAuth2AccessToken) accessToken).setScope(user.getPermissions());
        return accessToken;
    }
}

当我想通过@PreAuthorize("hasRole('ROLE_USER')#oauth2.hasScope('XXXXX')")注释在我的WebService中测试它时。它不起作用,因为检查是基于客户端范围而不是用户访问范围?有没有办法,通过使用#oauth2.hasScope('XXXXX')注释来使用访问令牌范围(代表我的权限用户)而不是客户端范围?我怎么能这样做?

0 个答案:

没有答案