类 JWKSourceAutoConfiguration

java.lang.Object
io.github.lishangbu.orange.oauth2.authorizationserver.autoconfiguration.JWKSourceAutoConfiguration
所有已实现的接口:
org.springframework.beans.factory.InitializingBean

@AutoConfiguration public class JWKSourceAutoConfiguration extends Object implements org.springframework.beans.factory.InitializingBean
JWKSource 自动装配

负责提供用于签名的 JWKSource 实例,支持从配置加载公/私钥,若未配置则回退为运行时生成的密钥对

行为要点:

  • 密钥在首次使用时懒初始化,线程安全
  • 优先使用公钥 thumbprint 作为 kid,保证 kid 稳定可复现,避免验证不稳定
  • Spring Authorization Server 会自动从 JWKSource 提取公钥信息供 /.well-known/jwks.json 端点使用
  • 支持从 classpath 或文件系统加载 PEM 格式的公私钥
  • 加载失败时自动回退为随机生成的密钥对,并记录警告
从以下版本开始:
2025/8/17
作者:
lishangbu
  • 构造器详细资料

    • JWKSourceAutoConfiguration

      public JWKSourceAutoConfiguration()
  • 方法详细资料

    • jwkSource

      @Bean @ConditionalOnMissingBean public com.nimbusds.jose.jwk.source.JWKSource<com.nimbusds.jose.proc.SecurityContext> jwkSource()
      返回用于签名的 JWKSource

      方法保证密钥已初始化(从配置加载或运行时生成),并返回一个不可变的 JWKSet 供框架选择签名密钥 Spring Authorization Server 会自动处理 /.well-known/jwks.json 端点,从此 JWKSource 提取公钥信息

      返回:
      包含私钥的不可变 JWKSource,用于 Authorization Server 的 JWT 签名
    • afterPropertiesSet

      public void afterPropertiesSet()
      初始化时尝试从配置的资源位置加载 RSA 公钥和私钥

      优先使用 oauth2Properties 中的 jwtPublicKeyLocation 和 jwtPrivateKeyLocation 指定的资源 若两者均成功加载则使用加载的密钥;若任一密钥缺失或解析失败则回退为随机生成的密钥对, 并记录警告,注意重启后之前签发的 token 将不可解析

      支持的资源位置格式:

      • classpath: classpath:rsa/public.key
      • 文件系统: file:/path/to/public.key
      • 相对路径: rsa/public.key(相对于 classpath)
      指定者:
      afterPropertiesSet 在接口中 org.springframework.beans.factory.InitializingBean