jose4j: afgeleë JWK-aflaaie deur 'n HTTP-proxy
Koppel 'n proxy-bewuste Get-instansie aan HttpsJwks en hou die gekonfigureerde sleutelstel-instansie in gebruik vir sy kas en latere herlaai.
Die afgeleë sleutelstel-laai van jose4j het sy eie HTTP-ophaalobjek. Konfigureer daardie objek wanneer die toepassing 'n API kan aanroep maar nie die uitreiker se JSON Web Keys kan aflaai nie.
Die jose4j 0.9.6-API bied Get.setHttpProxy en 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);Gebruik hierdie gekonfigureerde jwks-objek in die toepassing se sleutelresolusie-opset. Om dit langs 'n bestaande resolver te skep, verander nie die resolver se ander instansie nie.
Get gebruik URL en HttpsURLConnection. Die eksplisiete Proxy word aan URL.openConnection(Proxy) deurgegee; dit beperk die roete tot hierdie laaier eerder as om 'n nuwe JVM-wye proxybeleid te vereis. Proxy-verifikasie, indien nodig, is 'n bykomende vervoerkwessie. 'n Goedgekeurde publiek bereikbare uitreiker-URL kan 'n HTTP-adres uit die HTTP-proxylys gebruik wanneer publieke tussenbemiddelaars toegelaat word en geen proxyrekening opgestel is nie.
HttpsJwks kas sleutels per instansie, op grond van kas-opskrifte en sy standaard-kasduur-instelling. Hou die instansie om daardie voordeel te kry. 'n Sleutel wat reeds gekas is, kan verifikasie laat voortgaan sonder om die netwerk te gebruik, terwyl 'n latere ophaal of herlaai steeds van die gekonfigureerde roete afhang.
Dit konfigureer sleutelophaling. Token-verifikasie benodig steeds die toepassing se normale handtekening-, uitreiker-, gehoor- en ander verifikasiebeleid; om net 'n JSON-sleutelstel te bekom, voer daardie kontroles nie uit nie.