Il caricatore remoto dei set di chiavi di jose4j dispone di un proprio oggetto di recupero HTTP. Configurate quell'oggetto quando l'applicazione può chiamare un'API ma non riesce a scaricare le JSON Web Keys dell'emittente.

L'API di jose4j 0.9.6 espone 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);

Usate questo oggetto jwks configurato nella disposizione di risoluzione delle chiavi dell'applicazione. Crearlo accanto a un resolver esistente non modifica l'altra istanza di quel resolver.

Get usa URL e HttpsURLConnection. Il Proxy esplicito viene passato a URL.openConnection(Proxy); ciò limita la rotta a questo caricatore invece di richiedere una nuova politica proxy a livello dell'intera JVM. L'autenticazione del proxy, se necessaria, è una questione di trasporto aggiuntiva. Un URL dell'emittente approvato e raggiungibile pubblicamente può usare un indirizzo HTTP dal elenco dei proxy HTTP quando gli intermediari pubblici sono consentiti e non è configurato alcun account proxy.

HttpsJwks memorizza le chiavi in cache per istanza, in base alle intestazioni della cache e all'impostazione della durata predefinita. Conservate l'istanza per ottenere questo vantaggio. Una chiave già in cache può consentire alla convalida di proseguire senza usare la rete, mentre un recupero o un aggiornamento successivo dipende ancora dalla rotta configurata.

Questo configura il recupero delle chiavi. La convalida del token richiede comunque la normale politica dell'applicazione per firma, emittente, audience e altri controlli; ottenere un set di chiavi JSON da solo non esegue questi controlli.

Articoli correlati