Λήψεις JWKS μέσω διακομιστή μεσολάβησης για τον αντιδραστικό αποκωδικοποιητή JWT του Spring
Ενσωματώστε τον πελάτη στο NimbusReactiveJwtDecoder και διατηρήστε τους υπάρχοντες ελέγχους εκδότη, κοινού και άλλων διακριτικών κατά τη σύνδεση με τον διακομιστή πόρων.
var transport = reactor.netty.http.client.HttpClient.create()
.proxy(spec -> spec
.type(reactor.netty.transport.ProxyProvider.Proxy.HTTP)
.host("proxy.example")
.port(8080));
var webClient = org.springframework.web.reactive.function.client.WebClient
.builder()
.clientConnector(new org.springframework.http.client.reactive
.ReactorClientHttpConnector(transport))
.build();
var decoder = org.springframework.security.oauth2.jwt.NimbusReactiveJwtDecoder
.withJwkSetUri(jwkSetUri)
.webClient(webClient)
.build();
decoder.setJwtValidator(org.springframework.security.oauth2.jwt.JwtValidators
.createDefaultWithIssuer(issuer));Χρησιμοποιήστε τις αξιόπιστες τιμές jwkSetUri/issuer και εγκαταστήστε αυτόν τον αποκωδικοποιητή μέσω του πραγματικού bean ReactiveJwtDecoder ή ρητής διαμόρφωσης του διακομιστή πόρων. Η δημιουργία του δίπλα σε έναν αμετάβλητο ενεργό αποκωδικοποιητή δεν αλλάζει την ανάκτηση κλειδιών. Αν το αξιόπιστο JWKS URL είναι δημόσιο και επιτρέπονται δημόσιοι μεσάζοντες, η λίστα διακομιστών μεσολάβησης HTTP παρέχει υποψηφίους για το host και τη θύρα της μεταφοράς χωρίς λογαριασμό.
Ο εμφανιζόμενος επαληθευτής διατηρεί τους προεπιλεγμένους ελέγχους χρόνου και την επικύρωση εκδότη. Διατηρήστε τις απαιτήσεις κοινού και όλους τους πρόσθετους επαληθευτές της εφαρμογής όταν αντικαθιστάτε τον αποκωδικοποιητή.
Ένα γνωστό URI κλειδιού παρακάμπτει την ανακάλυψη για τον εντοπισμό του. Αν άλλο στοιχείο εκτελεί ακόμη ανακάλυψη ή απόκτηση διακριτικών, διαμορφώστε τη διαδρομή εκείνου του πελάτη ξεχωριστά.
Αυτό καλύπτει την επαλήθευση αντιδραστικών JWT στον διακομιστή πόρων. Ο διακομιστής πόρων Servlet, η σύνδεση OAuth2 και οι πελάτες επιχειρηματικών API έχουν άλλα σημεία σύνδεσης· κρατήστε το αποτυχημένο URL κλειδιού και το στάδιο μαζί με τη διερεύνηση.