Ο φορτωτής απομακρυσμένου συνόλου κλειδιών του jose4j έχει δικό του αντικείμενο ανάκτησης HTTP. Ρυθμίστε αυτό το αντικείμενο όταν η εφαρμογή μπορεί να καλέσει ένα API αλλά δεν μπορεί να κατεβάσει τα JSON Web Keys του εκδότη.

Το API του jose4j 0.9.6 εκθέτει τα Get.setHttpProxy και 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);

Χρησιμοποιήστε αυτό το ρυθμισμένο αντικείμενο jwks στη διάταξη επίλυσης κλειδιών της εφαρμογής. Η δημιουργία του δίπλα σε έναν υπάρχοντα resolver δεν αλλάζει το άλλο στιγμιότυπο του resolver.

Το Get χρησιμοποιεί URL και HttpsURLConnection. Το ρητό Proxy περνά στο URL.openConnection(Proxy)· αυτό περιορίζει τη διαδρομή σε αυτόν τον φορτωτή αντί να απαιτεί νέα πολιτική διαμεσολαβητή για όλη τη JVM. Ο έλεγχος ταυτότητας διαμεσολαβητή, αν χρειάζεται, είναι πρόσθετο ζήτημα μεταφοράς. Ένα εγκεκριμένο, δημόσια προσβάσιμο URL εκδότη μπορεί να χρησιμοποιήσει διεύθυνση HTTP από τη λίστα διαμεσολαβητών HTTP όταν επιτρέπονται δημόσιοι μεσάζοντες και δεν έχει ρυθμιστεί λογαριασμός διαμεσολαβητή.

Το HttpsJwks αποθηκεύει προσωρινά κλειδιά ανά στιγμιότυπο, με βάση τις κεφαλίδες προσωρινής μνήμης και τη ρύθμιση προεπιλεγμένης διάρκειας. Κρατήστε το στιγμιότυπο για να έχετε αυτό το όφελος. Ένα ήδη αποθηκευμένο κλειδί μπορεί να επιτρέψει στην επικύρωση να συνεχιστεί χωρίς χρήση δικτύου, ενώ μια μεταγενέστερη ανάκτηση ή ανανέωση εξαρτάται ακόμη από τη ρυθμισμένη διαδρομή.

Αυτό ρυθμίζει την ανάκτηση κλειδιών. Η επικύρωση διακριτικού εξακολουθεί να χρειάζεται τη συνήθη πολιτική της εφαρμογής για υπογραφή, εκδότη, κοινό και άλλους ελέγχους· η απόκτηση μόνο ενός συνόλου κλειδιών JSON δεν εκτελεί αυτούς τους ελέγχους.

Σχετικά άρθρα