Pemuat kumpulan kunci jarak jauh jose4j memiliki objek pengambilan HTTP sendiri. Konfigurasikan objek itu ketika aplikasi dapat memanggil API tetapi tidak dapat mengunduh JSON Web Keys milik penerbit.

API jose4j 0.9.6 menyediakan Get.setHttpProxy dan HttpsJwks.setSimpleHttpGet:

org.jose4j.http.Get downloader = new org.jose4j.http.Get();
downloader.setHttpProxy(new java.net.Proxy(
    java.net.Proxy.Type.HTTP,
    new java.net.InetSocketAddress("proxy.example", 8080)));
downloader.setConnectTimeout(5000);
downloader.setReadTimeout(15000);

org.jose4j.jwk.HttpsJwks jwks = new org.jose4j.jwk.HttpsJwks(
    "https://issuer.example/keys");
jwks.setSimpleHttpGet(downloader);

Gunakan objek jwks yang dikonfigurasi ini dalam susunan resolusi kunci aplikasi. Membuatnya di samping resolver yang ada tidak mengubah instans lain dari resolver tersebut.

Get menggunakan URL dan HttpsURLConnection. Proxy eksplisit diteruskan ke URL.openConnection(Proxy); ini membatasi rute ke pemuat ini alih-alih menuntut kebijakan proxy baru untuk seluruh JVM. Autentikasi proxy, jika diperlukan, adalah urusan transportasi tambahan. URL penerbit yang disetujui dan dapat dijangkau publik dapat memakai alamat HTTP dari daftar proxy HTTP bila perantara publik diizinkan dan tidak ada akun proxy yang dikonfigurasi.

HttpsJwks menyimpan kunci dalam cache per instans, berdasarkan header cache dan pengaturan durasi cache bawaannya. Pertahankan instans untuk memperoleh manfaat itu. Kunci yang sudah di-cache dapat membuat validasi berlanjut tanpa menggunakan jaringan, sedangkan pengambilan atau penyegaran berikutnya tetap bergantung pada rute yang dikonfigurasi.

Ini mengonfigurasi pengambilan kunci. Validasi token tetap membutuhkan kebijakan validasi biasa aplikasi untuk tanda tangan, penerbit, audiens, dan pemeriksaan lain; memperoleh kumpulan kunci JSON saja tidak melakukan pemeriksaan tersebut.

Artikel terkait