首页 > 解决方案 > Spring Authorization Server 和 Spring Resource Server 合二为一

问题描述

有没有人尝试在 1 个项目和 1 个服务器中同时使用新发布的 Spring Authorization Server 0.1.0 和常规 Spring Resource Server,例如:

资源服务器在http://localhost:8080,授权服务器也在http://localhost:8080?关于如何做的任何想法?

问题是在启动时,资源服务器会检查授权服务器/.well-known/openid-configuration,这显然是不可用的。

标签: spring-security

解决方案


代替issuer-uri,您可以指定jwk-set-uri,它在启动时不被 ping 。

或者,由于授权服务器和资源服务器将使用内存空间来存储密钥,因此您可以构建自己的 Nimbus JWTProcessor,以便跳过内部 HTTP 请求:

@Bean
JwtDecoder jwtDecoder() {
    JWKSource<SecurityContext> source = // ... some internal store for the public keys, e.g. not RemoteJWKSet
    ConfigurableJWTProcessor<SecurityContext> processor = new DefaultJWTProcessor<>();
    JWSKeySelector<SecurityContext> selector = new JWSVerificationKeySelector(
        JWSAlgorithm.RS256, source);
    processor.setJWSKeySelector(selector);
    NimbusJwtDecoder decoder = new NimbusJwtDecoder(processor);
    decoder.setJwtValidator(... add any validation rules ...);
    return decoder;
}

推荐阅读