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 الموثوقة، وثبّت هذا المفكِّك عبر وحدة ReactiveJwtDecoder الفعلية أو عبر تهيئة صريحة لخادم الموارد. إنشاءه بجانب مفكِّك نشط لم يتغيّر لا يغيّر طريقة استرجاع المفاتيح. إذا كان عنوان JWKS الموثوق عامًّا وكانت الوسائط العامة مسموحة، فإن قائمة وسطاء HTTP توفّر مرشّحين لمضيف ومنفذ النقل الذي لا يحتاج حسابًا.

يحتفظ المدقّق المعروض بفحوص الوقت الافتراضية والتحقق من المُصدِر. أبقِ متطلبات الجمهور وكل مدقّقات التطبيق الإضافية عند استبدال المفكِّك.

عنوان مفتاح معروف يتجاوز الاكتشاف لتحديد موقعه. إذا كان مكوّن آخر لا يزال ينفّذ الاكتشاف أو الحصول على الرمز، فاضبط مسار ذلك العميل على حدة.

يغطي هذا التحقق من رموز JWT التفاعلية في خادم الموارد. أما خادم موارد Servlet وتسجيل الدخول عبر OAuth2 وعملاء واجهات الأعمال فلهم نقاط ربط أخرى؛ احتفظ بعنوان المفتاح الفاشل والمرحلة ضمن التحقيق.

مقالات ذات صلة