Pobieranie JWKS przez proxy dla reaktywnego dekodera JWT Springa
Wstrzyknij klienta do NimbusReactiveJwtDecoder i zachowaj istniejące kontrole wystawcy, odbiorców i innych tokenów podczas podłączania go do serwera zasobów.
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));Użyj zaufanych wartości jwkSetUri/issuer i zainstaluj ten dekoder przez rzeczywisty bean ReactiveJwtDecoder lub jawną konfigurację serwera zasobów. Utworzenie go obok niezmienionego aktywnego dekodera nie zmienia pobierania kluczy. Jeśli zaufany adres JWKS jest publiczny i dozwolone są publiczne pośredniki, lista proxy HTTP dostarcza kandydatów dla hosta i portu transportu bez konta.
Pokazany walidator zachowuje domyślne kontrole czasu i walidację wystawcy. Zachowaj wymagania dotyczące odbiorców i wszystkie dodatkowe walidatory aplikacji podczas wymiany dekodera.
Znane URI klucza omija wykrywanie w celu jego zlokalizowania. Jeśli inny komponent nadal wykonuje wykrywanie lub pozyskiwanie tokenów, skonfiguruj trasę tego klienta osobno.
Obejmuje to weryfikację reaktywnych JWT na serwerze zasobów. Serwer zasobów Servlet, logowanie OAuth2 i klienci biznesowych interfejsów API mają inne punkty zaczepienia; zachowaj nieudany adres klucza i etap wraz z dochodzeniem.