jose4j: ekstern JWK-nedlasting gjennom en HTTP-proxy
Koble en proxybevisst Get-instans til HttpsJwks og behold den konfigurerte nøkkelsett-instansen for cachen og senere oppdateringer.
Lasteren for eksterne nøkkelsett i jose4j har sitt eget HTTP-henteobjekt. Konfigurer dette objektet når applikasjonen kan kalle et API, men ikke kan laste ned utstederens JSON Web Keys.
API-et i jose4j 0.9.6 eksponerer Get.setHttpProxy og 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);Bruk dette konfigurerte jwks-objektet i applikasjonens nøkkeloppløsning. Å opprette det ved siden av en eksisterende resolver endrer ikke resolverens andre instans.
Get bruker URL og HttpsURLConnection. Den eksplisitte Proxy-en sendes til URL.openConnection(Proxy); dette begrenser ruten til denne lasteren i stedet for å kreve en ny JVM-dekkende proxy-policy. Proxy-autentisering er, hvis den kreves, et ekstra transportanliggende. En godkjent offentlig tilgjengelig utsteder-URL kan bruke en HTTP-adresse fra HTTP-proxylisten når offentlige mellomledd er tillatt og ingen proxykonto er konfigurert.
HttpsJwks cacher nøkler per instans, basert på cache-hoder og innstillingen for standard cachevarighet. Behold instansen for å få denne fordelen. En allerede bufret nøkkel kan la valideringen fortsette uten å bruke nettverket, mens en senere henting eller oppdatering fortsatt avhenger av den konfigurerte ruten.
Dette konfigurerer nøkkelhenting. Tokenvalidering trenger fortsatt applikasjonens vanlige policy for signatur, utsteder, publikum og andre kontroller; å skaffe et JSON-nøkkelsett alene utfører ikke disse kontrollene.