El cargador remoto de conjuntos de claves de jose4j tiene su propio objeto de recuperación HTTP. Configure ese objeto cuando la aplicación puede llamar a una API pero no puede descargar las JSON Web Keys del emisor.

La API de jose4j 0.9.6 expone Get.setHttpProxy y 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 objeto jwks configurado en el esquema de resolución de claves de la aplicación. Crearlo junto a un solucionador existente no cambia la otra instancia de ese solucionador.

Get usa URL y HttpsURLConnection. El Proxy explícito se pasa a URL.openConnection(Proxy); esto limita la ruta a este cargador en lugar de exigir una nueva política de proxy para toda la JVM. La autenticación del proxy, si se necesita, es una cuestión de transporte adicional. Una URL de emisor aprobada y accesible públicamente puede usar una dirección HTTP de la lista de proxies HTTP cuando se permiten intermediarios públicos y no hay ninguna cuenta de proxy configurada.

HttpsJwks almacena en caché las claves por instancia, según las cabeceras de caché y su ajuste de duración predeterminada. Conserve la instancia para obtener ese beneficio. Una clave ya almacenada puede permitir que la validación continúe sin usar la red, mientras que una recuperación o actualización posterior sigue dependiendo de la ruta configurada.

Esto configura la recuperación de claves. La validación del token aún necesita la política normal de la aplicación para firma, emisor, audiencia y otras comprobaciones; obtener un conjunto de claves JSON por sí solo no realiza esas comprobaciones.

Artículos relacionados