Spring NimbusJwtDecoder: พร็อกซีการดาวน์โหลดชุด JWK
มอบ RestTemplate ที่รู้จักพร็อกซีให้ตัวถอดรหัส servlet และคงตัวตรวจสอบ issuer, audience และตัวตรวจสอบโทเค็นเพิ่มเติมไว้เมื่อแทนที่การกำหนดค่าอัตโนมัติ
คำขอ bearer ที่เข้ามาสามารถไปถึงเซิร์ฟเวอร์ทรัพยากรได้ ขณะที่การตรวจสอบ JWT ล้มเหลวในการดาวน์โหลด JWK ขาออก กำหนดค่าไคลเอนต์ HTTP ที่ตัวถอดรหัสนั้นใช้:
var factory = new org.springframework.http.client.SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example", 8080)));
var rest = new org.springframework.web.client.RestTemplate(factory);
var decoder = org.springframework.security.oauth2.jwt.NimbusJwtDecoder
.withJwkSetUri(jwkSetUri)
.restOperations(rest)
.build();
decoder.setJwtValidator(
org.springframework.security.oauth2.jwt.JwtValidators
.createDefaultWithIssuer(issuer));ใช้ jwkSetUri และ issuer จริงของแอปพลิเคชัน และติดตั้งตัวถอดรหัสนี้ในการกำหนดค่าเซิร์ฟเวอร์ทรัพยากรจริง ตัวอย่างใช้พร็อกซี HTTP ที่ไม่มีการพิสูจน์ตัวตนกับตัวถอดรหัส Nimbus สไตล์ servlet สำหรับ URL ของ JWK สาธารณะบนเส้นทางพร็อกซีสาธารณะที่ได้รับอนุญาต รายการพร็อกซี HTTP ให้ค่า host และ port ที่เป็นไปได้
ตัวตรวจสอบ issuer ในตัวอย่างไม่ใช่สิ่งทดแทนการตรวจสอบ audience ที่จำเป็นหรือการตรวจสอบอื่นของแอปพลิเคชัน คงไว้เมื่อแทนที่ตัวถอดรหัสที่กำหนดค่าอัตโนมัติ การเปลี่ยนเส้นทางการดาวน์โหลดคีย์ไม่ได้กำหนดว่าแอปพลิเคชันควรยอมรับโทเค็นใด
ตัวถอดรหัสแบบ reactive ใช้อินเทอร์เฟซอื่น ไคลเอนต์อื่นที่ค้นหา issuer หรือรับโทเค็นก็คงการกำหนดค่าการขนส่งของตนเองเช่นกัน
คีย์ที่แคชไว้อาจทำให้การตรวจสอบสำเร็จโดยไม่ต้องดาวน์โหลดใหม่ เก็บ URL ของคีย์ที่ล้มเหลวและขั้นตอนการรีเฟรชหรือเริ่มต้นเมื่อประเมินเส้นทาง