我有一个我用于身份验证的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没有传递这些信息。
答案 0 :(得分:0)
在您对校长进行身份验证时,您应该向校长提供授予的权限。
我假设您有一个实现UserDetails
的自定义类,并且您覆盖getAuthorities()
。此方法应返回名为ROLE_ADMIN
的权限。请注意,角色应以ROLE_
答案 1 :(得分:0)
组,角色和权限不会自动添加到jwt中。你必须 创建新规则或修改默认规则,该默认规则是在启用(发布)授权扩展后创建的。