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.

Artigos relacionados