Descargas remotas de JWK de jose4j a través dun proxy HTTP
Conecte unha instancia Get consciente do proxy a HttpsJwks e manteña a instancia do conxunto de claves configurada para a súa caché e as actualizacións posteriores.
O cargador remoto de conxuntos de claves de jose4j ten o seu propio obxecto de recuperación HTTP. Configure ese obxecto cando a aplicación pode chamar unha API pero non pode descargar as JSON Web Keys do emisor.
A API de jose4j 0.9.6 expón Get.setHttpProxy e 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);Use este obxecto jwks configurado no esquema de resolución de claves da aplicación. Crealo xunto a un resolvedor existente non cambia a outra instancia dese resolvedor.
Get usa URL e HttpsURLConnection. O Proxy explícito pásase a URL.openConnection(Proxy); isto limita a ruta a este cargador en lugar de esixir unha nova política de proxy para toda a JVM. A autenticación do proxy, se é necesaria, é unha cuestión de transporte adicional. Un URL de emisor aprobado e accesible publicamente pode usar un enderezo HTTP da lista de proxies HTTP cando se permiten intermediarios públicos e non hai ningunha conta de proxy configurada.
HttpsJwks garda as claves na caché por instancia, segundo as cabeceiras de caché e o seu axuste de duración predeterminada. Manteña a instancia para obter ese beneficio. Unha clave xa gardada pode permitir que a validación continúe sen usar a rede, mentres que unha recuperación ou actualización posterior aínda depende da ruta configurada.
Isto configura a recuperación de claves. A validación do token aínda necesita a política normal da aplicación para sinatura, emisor, audiencia e outras comprobacións; obter un conxunto de claves JSON por si só non realiza esas comprobacións.