Loader zdalnego zestawu kluczy jose4j ma własny obiekt pobierania HTTP. Skonfiguruj ten obiekt, gdy aplikacja może wywołać API, ale nie może pobrać JSON Web Keys wystawcy.

API jose4j 0.9.6 udostępnia Get.setHttpProxy i 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);

Użyj tego skonfigurowanego obiektu jwks w układzie rozwiązywania kluczy aplikacji. Utworzenie go obok istniejącego resolvera nie zmienia drugiej instancji tego resolvera.

Get używa URL i HttpsURLConnection. Jawny Proxy jest przekazywany do URL.openConnection(Proxy); ogranicza to trasę do tego loadera, zamiast wymagać nowej polityki proxy dla całej JVM. Uwierzytelnianie proxy, jeśli jest wymagane, to dodatkowa kwestia transportowa. Zatwierdzony, publicznie dostępny URL wystawcy może używać adresu HTTP z listy proxy HTTP, gdy publiczni pośrednicy są dozwoleni i nie skonfigurowano konta proxy.

HttpsJwks buforuje klucze na instancję, na podstawie nagłówków pamięci podręcznej i ustawienia domyślnego czasu jej przechowywania. Zachowaj instancję, aby uzyskać tę korzyść. Klucz już w pamięci podręcznej może pozwolić walidacji kontynuować bez korzystania z sieci, natomiast późniejsze pobranie lub odświeżenie nadal zależy od skonfigurowanej trasy.

To konfiguruje pobieranie kluczy. Walidacja tokenu nadal wymaga zwykłej polityki aplikacji dotyczącej podpisu, wystawcy, odbiorców i innych kontroli; samo uzyskanie zestawu kluczy JSON nie wykonuje tych sprawdzeń.

Powiązane artykuły