Spring のリアクティブ JWT デコーダー向けプロキシ経由 JWKS ダウンロード
クライアントを NimbusReactiveJwtDecoder に注入し、リソースサーバーへ接続する際に既存の issuer、audience などのトークン検証を維持します。
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));信頼できる jwkSetUri/issuer の値を使用し、このデコーダーを実際の ReactiveJwtDecoder Bean または明示的なリソースサーバー設定で組み込みます。変更していない有効なデコーダーの隣に作成しても、鍵の取得方法は変わりません。信頼できる JWKS URL が公開されており、公開された中間プロキシが許可されている場合、HTTP プロキシ一覧からアカウント不要の転送用ホストとポートの候補を選べます。
示されているバリデーターは既定の時刻検証と issuer 検証を維持します。デコーダーを置き換える際は、audience の要件とアプリケーション固有の追加バリデーターをすべて残してください。
既知の鍵 URI を使うと、その場所を探すための discovery を省略できます。別のコンポーネントがまだ discovery やトークン取得を行う場合は、そのクライアントの経路を別途設定してください。
ここではリソースサーバーでのリアクティブ JWT 検証を扱います。Servlet リソースサーバー、OAuth2 ログイン、業務 API クライアントには別の接続点があります。失敗した鍵 URL と段階を調査記録に残してください。