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 छान्नुहोस्; ती वस्तुहरू यो कन्फिगरेसनमा नमिसाउनुहोस्।