Downloads de JWKS através de proxy para o decodificador JWT reativo do Spring
Injete o cliente no NimbusReactiveJwtDecoder e mantenha as verificações existentes de emissor, audiência e outros tokens ao ligá-lo ao servidor de recursos.
var transport = reactor.netty.http.client.HttpClient.create()
.proxy(spec -> spec
.type(reactor.netty.transport.ProxyProvider.Proxy.HTTP)
.host("proxy.example")
.port(8080));
var webClient = org.springframework.web.reactive.function.client.WebClient
.builder()
.clientConnector(new org.springframework.http.client.reactive
.ReactorClientHttpConnector(transport))
.build();
var decoder = org.springframework.security.oauth2.jwt.NimbusReactiveJwtDecoder
.withJwkSetUri(jwkSetUri)
.webClient(webClient)
.build();
decoder.setJwtValidator(org.springframework.security.oauth2.jwt.JwtValidators
.createDefaultWithIssuer(issuer));Utilize os valores de confiança jwkSetUri/issuer e instale este decodificador através do bean real ReactiveJwtDecoder ou de uma configuração explícita do servidor de recursos. Criá-lo ao lado de um decodificador ativo inalterado não altera a obtenção de chaves. Se o URL JWKS de confiança for público e os intermediários públicos forem permitidos, a lista de proxies HTTP fornece candidatos para o host e a porta do transporte sem conta.
O validador apresentado mantém as verificações de tempo predefinidas e a validação do emissor. Mantenha os requisitos de audiência e todos os validadores adicionais da aplicação ao substituir o decodificador.
Um URI de chave conhecido contorna a descoberta para a localizar. Se outro componente ainda efetuar descoberta ou obtenção de tokens, configure o percurso desse cliente separadamente.
Isto abrange a verificação de JWT reativos no servidor de recursos. O servidor de recursos Servlet, o início de sessão OAuth2 e os clientes de API empresariais têm outros pontos de ligação; guarde o URL da chave que falhou e a etapa com a investigação.