Spring Security 6.5: OAuth प्राधिकरण कोड एक्सचेंज को प्रॉक्सी से भेजें
Spring Security के प्राधिकरण कोड टोकन प्रतिक्रिया क्लाइंट को प्रॉक्सी-जागरूक RestClient दें, साथ ही उसके OAuth कन्वर्टर और त्रुटि हैंडलर बनाए रखें।
ब्राउज़र पहचान प्रदाता तक पहुँचता है, फिर लॉगिन तब विफल हो जाता है जब एप्लिकेशन लौटाए गए प्राधिकरण कोड का आदान-प्रदान करता है। वह आदान-प्रदान एप्लिकेशन सर्वर से बाहर जाने वाला अनुरोध है, जिसका अपना HTTP क्लाइंट है।
Spring Security 6.5 में उपलब्ध RestClient-आधारित API के लिए, प्राधिकरण कोड टोकन प्रतिक्रिया क्लाइंट को प्रॉक्सी-जागरूक अनुरोध फ़ैक्टरी दें:
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example", 8080)));
factory.setConnectTimeout(5000);
factory.setReadTimeout(15000);
RestClient tokenHttp = RestClient.builder()
.requestFactory(factory)
.messageConverters(converters -> {
converters.clear();
converters.add(new FormHttpMessageConverter());
converters.add(new OAuth2AccessTokenResponseHttpMessageConverter());
})
.defaultStatusHandler(new OAuth2ErrorResponseErrorHandler())
.build();
RestClientAuthorizationCodeTokenResponseClient tokenClient =
new RestClientAuthorizationCodeTokenResponseClient();
tokenClient.setRestClient(tokenHttp);
कन्वर्टर और त्रुटि हैंडलर कक्षाएँ Spring Security के प्रलेखित टोकन अनुरोध व्यवहार को सुरक्षित रखती हैं। केवल किसी असंबंधित JSON API के लिए कॉन्फ़िगर किया गया सामान्य RestClient समतुल्य प्रतिस्थापन नहीं है।
उसी tokenClient को मौजूदा सुरक्षा कॉन्फ़िगरेशन में जोड़ें:
http.oauth2Login(login -> login
.tokenEndpoint(token -> token
.accessTokenResponseClient(tokenClient)));
ये कॉन्फ़िगरेशन अंश ऐसे एप्लिकेशन के लिए हैं जिसके पास पहले से क्लाइंट पंजीकरण और SecurityFilterChain है। ये बिना प्रमाणीकरण वाली HTTP प्रॉक्सी चुनते हैं; क्रेडेंशियल आवश्यक होने पर चुने गए ट्रांसपोर्ट का मिलान करने वाला प्रमाणीकरण कॉन्फ़िगरेशन चाहिए। अनुमत सार्वजनिक मार्ग पर सार्वजनिक रूप से पहुँचने योग्य HTTPS टोकन एंडपॉइंट के लिए, HTTP प्रॉक्सी सूची से कोई HTTP प्रविष्टि उस बिना खाते वाले प्रॉक्सी पते को भर सकती है।
प्रॉक्सी होस्ट को उसके पोर्ट और URL स्कीम से अलग रखें। पहचान प्रदाता के टोकन URI को गंतव्य रहने दें। उदाहरण प्रमाणपत्र सत्यापन का स्थान नहीं लेता।
बाद के अनुरोधों को अपना स्वामित्व जाँच चाहिए। UserInfo प्राप्ति, रीफ़्रेश टोकन एक्सचेंज, client-credentials अनुदान और संरक्षित API कॉल अन्य क्लाइंट ऑब्जेक्ट का उपयोग कर सकते हैं। जब उस क्रिया को भी मार्ग चाहिए तो संबंधित समर्थित क्लाइंट कॉन्फ़िगर करें। Spring Security 6.5 के प्रतिक्रियाशील client_credentials प्रवाह के लिए, प्रतिक्रियाशील टोकन क्लाइंट और उसके अनुदान प्रदाता को अलग से कॉन्फ़िगर करें।
OAuth2RestTemplate और AccessTokenProvider का उपयोग करने वाले पुराने उदाहरण पुराने Spring Security OAuth प्रोजेक्ट के हैं। कोड अनुकूलित करने से पहले इंस्टॉल किए गए एप्लिकेशन द्वारा उपयोग किया जाने वाला API चुनें; उन ऑब्जेक्ट को इस कॉन्फ़िगरेशन में न मिलाएँ।