oauth2.0 Sping Boot 没有阅读Auth0权限,尽管我创建了一个customJwtAuthenticationConverter

uidvcgyl  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(80)

在我的Sping Boot 项目中,我使用Auth0
我需要从Auth0 jwt令牌读取权限,然后使用它们来评估hasAuthority。
尽管我做了所有的努力,我还是不能从权限中读取,尽管我创建了一个自定义的JwtAuthenticationConverter来这样做
我保存了下面的JWT令牌(我删除了一些字符,所以这里没有共享合理的数据):

{
  "iss": "https://dev-hxo7qtywv.eu.auth0.com/",
  "sub": "google-oauth2|10344498554237",
  "aud": [
    "https://test/api",
    "https://dev-hxo7qtywv.eu.auth0.com/userinfo"
  ],
  "iat": 17010717,
  "exp": 17019317,
  "azp": "dv1rEpS37p9jaGIPXO0S5fnjMh",
  "scope": "openid profile email offline_access",
  "permissions": [
    "read:admin",
    "SCOPE_read:admin"
  ]
}

字符串
这是我的SecurityFilterChain类内容的一部分

@Bean
  public JwtAuthenticationConverter customJwtAuthenticationConverter() {
    JwtGrantedAuthoritiesConverter grantedAuthoritiesConverter = new JwtGrantedAuthoritiesConverter();
    grantedAuthoritiesConverter.setAuthoritiesClaimName("permissions");
    JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
    jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(grantedAuthoritiesConverter);
    return jwtAuthenticationConverter;
  }


.requestMatchers("/api/test/admin").hasAuthority("read:admin")


http.oauth2ResourceServer(oauth2 -> oauth2
        .jwt(jwt -> jwt.jwtAuthenticationConverter(customJwtAuthenticationConverter())));


我检查了控制器中的权限,看到以下内容:

Authority: SCOPE_openid
Authority: SCOPE_profile
Authority: SCOPE_email
Authority: SCOPE_offline_access


你知道为什么Sping Boot 不使用我的customJwtAuthenticationConverter吗?

raogr8fs

raogr8fs1#

找到了解决方案。在最新的库中,您只能通过以下方式配置它(在application.yml中)

okta:
    oauth2:
        groupsClaim: permissions

字符串

相关问题