我需要一个 JwtDecoder bean,我可以自动配置它吗?

sta*_*234 5 spring-security spring-boot

我有这个问题:

************************** 应用程序无法启动


描述:

org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration 中的方法 springSecurityFilterChain 需要一个类型为“org.springframework.security.oauth2.jwt.JwtDecoder”的 bean,但无法找到。

行动:

考虑在配置中定义“org.springframework.security.oauth2.jwt.JwtDecoder”类型的 bean。

如果我将其添加到我的 Spring Boot 项目中,一切都会按预期进行:

@Value("${spring.security.oauth2.keycloak.jwt.issuer-uri}")
private String issuerUri;

@Bean
public JwtDecoder jwtDecoder() {
    return JwtDecoders.fromOidcIssuerLocation(issuerUri);
}
Run Code Online (Sandbox Code Playgroud)

我的应用程序属性:

spring.security.oauth2.keycloak.jwt.issuer-uri=http://localhost:8180/auth/realms/dev

是否有可能以某种方式删除该@Bean方法并使其仍然有效?以某种方式让项目为自己创建该 bean?

Ase*_*ion 5

根据这篇文章,将以下配置添加到properties.yml文件将消除该错误:

spring:
  security:
    oauth2:
      resourceserver:
        jwt:
          jwk-set-uri: https://dev-.....okta.com/oauth2/default
Run Code Online (Sandbox Code Playgroud)

其中jwk-set-uri是授权服务器的颁发者 ID。