jose4j: entfernte JWK-Downloads über einen HTTP-Proxy
Binden Sie eine proxyfähige Get-Instanz an HttpsJwks und behalten Sie die konfigurierte Schlüsselsatz-Instanz für ihren Cache und spätere Aktualisierungen bei.
Der Loader für entfernte Schlüsselsätze von jose4j besitzt ein eigenes HTTP-Abrufobjekt. Konfigurieren Sie dieses Objekt, wenn die Anwendung eine API aufrufen kann, aber die JSON Web Keys des Ausstellers nicht herunterladen kann.
Die API von jose4j 0.9.6 stellt Get.setHttpProxy und HttpsJwks.setSimpleHttpGet bereit:
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);Verwenden Sie dieses konfigurierte jwks-Objekt in der Schlüsselauflösung der Anwendung. Es neben einem vorhandenen Resolver zu erzeugen, ändert dessen andere Instanz nicht.
Get verwendet URL und HttpsURLConnection. Der explizite Proxy wird an URL.openConnection(Proxy) übergeben; das beschränkt die Route auf diesen Loader, statt eine neue JVM-weite Proxy-Richtlinie zu verlangen. Eine Proxy-Authentifizierung ist, falls erforderlich, eine zusätzliche Transportfrage. Eine genehmigte, öffentlich erreichbare Aussteller-URL kann eine HTTP-Adresse aus der HTTP-Proxy-Liste verwenden, wenn öffentliche Vermittler zulässig sind und kein Proxy-Konto konfiguriert ist.
HttpsJwks speichert Schlüssel pro Instanz zwischen, basierend auf Cache-Headern und der Einstellung für die Standard-Cachedauer. Behalten Sie die Instanz, um diesen Vorteil zu nutzen. Ein bereits zwischengespeicherter Schlüssel kann die Validierung ohne Netzwerkzugriff fortsetzen lassen, während ein späterer Abruf oder eine Aktualisierung weiterhin von der konfigurierten Route abhängt.
Dies konfiguriert den Schlüsselabruf. Die Token-Validierung benötigt weiterhin die übliche Prüfrichtlinie der Anwendung für Signatur, Aussteller, Zielgruppe und weitere Punkte; allein der Bezug eines JSON-Schlüsselsatzes führt diese Prüfungen nicht aus.