具有授权扩展的Auth0不将角色传递给Spring Security JWT对象

时间:2018-05-29 13:51:31

标签: spring-boot auth0

我有一个我用于身份验证的Auth0项目。我根据this example建模了我的Spring代码。

我试图限制这样的区域......

.antMatchers(ADMIN).hasRole(Role.ADMIN.getRoleName())

但是当我将我的Admin角色添加到我的用户并尝试重新登录JWT时,我运行时没有显示任何角色......

Collection<SimpleGrantedAuthority> authorities = (Collection<SimpleGrantedAuthority>)    SecurityContextHolder.getContext().getAuthentication().getAuthorities();

它是空的。如何使用Auth0

将角色传递给我的应用程序

更多信息

我尝试解码JWT令牌,我甚至没有看到角色信息被传递....

Header
{"typ":"JWT","alg":"RS256","kid":"<Removed>"}
Body
{"iss":<Removed>,"sub":<Removed>,"aud":<removed>,"iat":<removed>,"exp":<removed>}

为什么Auth0没有传递这些信息。

2 个答案:

答案 0 :(得分:0)

在您对校长进行身份验证时,您应该向校长提供授予的权限。

我假设您有一个实现UserDetails的自定义类,并且您覆盖getAuthorities()。此方法应返回名为ROLE_ADMIN的权限。请注意,角色应以ROLE_

为前缀

答案 1 :(得分:0)

组,角色和权限不会自动添加到jwt中。你必须 创建新规则或修改默认规则,该默认规则是在启用(发布)授权扩展后创建的。

Adding roles and permissions to a JWT access token in Auth0