spring-security Spring授权服务器和Spring资源服务器在一个服务器中

mum43rcc  于 2022-11-11  发布在  Spring
关注(0)|答案(2)|浏览(322)

是否有人尝试在1个项目和1个服务器中同时使用新发布的Spring授权服务器0.1.0和常规Spring资源服务器,例如:
资源服务器位于http://localhost:8080,授权服务器也位于http://localhost:8080?有什么想法吗?
问题是在启动时,资源服务器会检查授权服务器的/.well-known/openid-configuration,而这显然还不可用。

yptwkmov

yptwkmov1#

您可以指定jwk-set-uri来代替issuer-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;
}
nwsw7zdq

nwsw7zdq2#

我相信您可以按如下方式设置jwtDecoder:

@Bean
JwtDecoder jwtDecoder(JWKSource<SecurityContext> jwkSource) {
    return OAuth2AuthorizationServerConfiguration.jwtDecoder(jwkSource);
}

因为在设置身份验证服务器时,您可能已经在其他地方将其定义为Bean

@Bean
public JWKSource<SecurityContext> jwkSource() {
    // implementation ...
}

相关问题