【发布时间】:2020-10-19 11:25:12
【问题描述】:
我正在使用 Okta Spring Boot Starter 的版本 1.4.0 来验证传入的 JWT 令牌。通过使用 Starter,身份验证和授权都可以开箱即用(默认设置非常好,您甚至不需要在自己的安全配置中定义任何内容)。
但是我不喜欢默认创建的角色,所以我想将传入的范围和角色映射到我自己定义的 Spring 权限。当使用普通的 OAuth 启动器时,可以定义一个 AuthoritiesExtractor bean 来执行 just :
@Bean
public AuthoritiesExtractor authoritiesExtractor() {
return new YourOwnAuthoritiesExtractor();
}
除此之外,还可以选择在您的安全配置中实现自定义jwtAuthenticationConverter:
http
..
.oauth2ResourceServer()
.jwt(jwt -> jwt.jwtAuthenticationConverter(new JwtAuthenticationConverter() {
@Override
protected Collection<GrantedAuthority> extractAuthorities(final Jwt jwt) {
// implementation
}
})
但是所有这些东西似乎都不适用于 Okta Starter,因为当 JWT 令牌发送到服务器时,提取器永远不会被调用。有人知道如何为 Okta 实现它吗?
【问题讨论】:
标签: spring-security okta