Permintaan bearer yang masuk dapat mencapai server sumber daya sementara verifikasi JWT gagal pada unduhan JWK keluar. Konfigurasikan klien HTTP yang digunakan dekoder tersebut:

var factory = new org.springframework.http.client.SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
var rest = new org.springframework.web.client.RestTemplate(factory);

var decoder = org.springframework.security.oauth2.jwt.NimbusJwtDecoder
    .withJwkSetUri(jwkSetUri)
    .restOperations(rest)
    .build();
decoder.setJwtValidator(
    org.springframework.security.oauth2.jwt.JwtValidators
        .createDefaultWithIssuer(issuer));

Gunakan jwkSetUri dan issuer aplikasi yang sebenarnya, dan pasang dekoder ini pada konfigurasi server sumber daya yang sesungguhnya. Contoh menggunakan proksi HTTP tanpa autentikasi dengan dekoder Nimbus bergaya servlet. Untuk URL JWK publik pada rute proksi publik yang diizinkan, daftar proksi HTTP menyediakan nilai host dan port kandidat.

Validator issuer dalam contoh bukan pengganti pemeriksaan audience yang diwajibkan atau pemeriksaan aplikasi lainnya. Pertahankan pemeriksaan itu saat mengganti dekoder yang dikonfigurasi otomatis; mengubah rute unduhan kunci tidak menentukan token mana yang harus diterima aplikasi.

Dekoder reaktif menggunakan antarmuka lain. Klien penemuan issuer atau perolehan token lainnya juga mempertahankan konfigurasi transportnya sendiri.

Kunci yang tersimpan di cache dapat membuat verifikasi berhasil tanpa unduhan baru. Simpan URL kunci yang gagal dan tahap penyegaran atau inisialisasi saat mengevaluasi rute.

Artikel terkait