De lader voor externe sleutelsets van jose4j heeft een eigen HTTP-ophaalobject. Configureer dat object wanneer de toepassing een API kan aanroepen maar de JSON Web Keys van de uitgever niet kan downloaden.

De API van jose4j 0.9.6 biedt 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 dit geconfigureerde jwks-object in de sleuteloplossing van de toepassing. Het naast een bestaande resolver aanmaken verandert de andere instantie van die resolver niet.

Get gebruikt URL en HttpsURLConnection. De expliciete Proxy wordt doorgegeven aan URL.openConnection(Proxy); dat beperkt de route tot deze lader in plaats van een nieuw JVM-breed proxybeleid te vereisen. Proxy-authenticatie is, indien nodig, een extra transportkwestie. Een goedgekeurde openbaar bereikbare uitgevers-URL kan een HTTP-adres uit de HTTP-proxylijst gebruiken wanneer openbare tussenpersonen zijn toegestaan en er geen proxyaccount is geconfigureerd.

HttpsJwks cachet sleutels per instantie, op basis van cacheheaders en de instelling voor de standaard cacheduur. Behoud de instantie om dat voordeel te krijgen. Een al gecachte sleutel kan de validatie laten doorgaan zonder het netwerk te gebruiken, terwijl een latere ophaling of vernieuwing nog steeds van de geconfigureerde route afhangt.

Dit configureert het ophalen van sleutels. Tokenvalidatie heeft nog steeds het gebruikelijke beleid van de toepassing nodig voor handtekening, uitgever, doelgroep en andere controles; het verkrijgen van een JSON-sleutelset alleen voert die controles niet uit.

Gerelateerde artikelen