如何配置并告诉Auth0返回授权机构的身份验证令牌(JWT)

如何配置并告诉Auth0返回授权机构的身份验证令牌(JWT),jwt,authorization,auth0,Jwt,Authorization,Auth0,我只是想让Auth0在身份验证后给我授权 注意:我使用的是JavaSpring,尽管与我的问题不一定相关 我已经启用了Auth0身份验证,并且有一个同意后处理程序,可以执行以下操作: Tokens tokens = controller.handle(request, response); TokenAuthentication tokenAuth = new TokenAuthentication(JWT.decode(tokens.getIdToken())); 在这个token对象中,我

我只是想让Auth0在身份验证后给我授权

注意:我使用的是JavaSpring,尽管与我的问题不一定相关

我已经启用了Auth0身份验证,并且有一个同意后处理程序,可以执行以下操作:

Tokens tokens = controller.handle(request, response);
TokenAuthentication tokenAuth = new TokenAuthentication(JWT.decode(tokens.getIdToken()));
在这个
token
对象中,我能够调用像
getClaims()
这样的方法,这是Auth0存储用户信息的自定义方式

然而,在春季,我需要像预授权(“hasRole('ROLE_VIEWER')”)这样的事情,我知道这样做的唯一方法是设置用户登录时在Auth0
JWT
中返回的
GrantAuthority
。从这里开始,我个人通过执行
SecurityContextHolder.getContext().setAuthentication(tokenAuth)将请求标记为用户已验证

关键是这个令牌来自Auth0,并且是加密签名的,所以我不相信有任何方法可以修改这个令牌或以任何有意义的方式创建一个新的令牌。如果这是错误的,请告诉我

因此,我可以想象我能够为用户分配一个具有所需权限的令牌/会话的唯一方法是Auth0给我一个具有授权的令牌,这样
tokenAuth.getAuthorities()
就拥有了我希望用户拥有的角色,并且我可以在以后的每个请求中进行检查。目前,Auth0中的内容为空,没有权限

此外,我以前的印象是,添加(然后为应用程序授权API,创建并使用应用程序的标识符作为
受众,然后将用户的权限设置为该API的权限)将返回Auth0权限作为权限,但事实并非如此

  • 我对这些权限的用途和使用方式感到困惑 如果我无法在令牌中查看它们,请对我有用。
  • 我不知道如何才能让Auth0通过我能通过的任何权限 完全可以使用。