Spring Reactive OAuth2: प्रोक्सी client_credentials टोकन अनुरोधहरू
Spring Security 6.5 को client_credentials मा टोकन WebClient लाई प्रदायकमार्फत वास्तवमै प्रयोग हुने authorized-client म्यानेजरमा जोड्नुहोस्।
प्रोक्सीबाट जाने स्रोत WebClient आफ्नो API कल अघि नै असफल हुन सक्छ यदि टोकन प्राप्तिले अर्को कनेक्टर प्रयोग गर्छ। Spring Security 6.5 को रिएक्टिभ client_credentials प्रवाहका लागि तीनै भाग जोड्नुहोस्:
HttpClient route = HttpClient.create()
.proxy(p -> p.type(ProxyProvider.Proxy.HTTP)
.host("proxy.example").port(8080));
WebClient tokenHttp = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(route))
.build();
var tokens = new WebClientReactiveClientCredentialsTokenResponseClient();
tokens.setWebClient(tokenHttp);
var provider = new ClientCredentialsReactiveOAuth2AuthorizedClientProvider();
provider.setAccessTokenResponseClient(tokens);
var manager = new AuthorizedClientServiceReactiveOAuth2AuthorizedClientManager(
registrations, authorizedClients);
manager.setAuthorizedClientProvider(provider);tokens.setWebClient ले टोकन HTTP क्लाइन्ट तोक्छ; provider.setAccessTokenResponseClient ले यसलाई grant प्रदायकमा तोक्छ; manager.setAuthorizedClientProvider ले त्यो प्रदायक स्थापना गर्छ। यो म्यानेजर वास्तविक OAuth फिल्टर वा authorized-client कार्यप्रवाहमा प्रयोग गर्नुहोस्।
HttpClient र ProxyProvider Reactor Netty प्रकार हुन्। WebClient र यसको कनेक्टर Spring WebFlux प्रकार हुन्। विद्यमान ReactiveClientRegistrationRepository लाई registrations को रूपमा र ReactiveOAuth2AuthorizedClientService लाई authorizedClients को रूपमा दिनुहोस्।
यो प्रदायकले client_credentials ह्यान्डल गर्छ; अन्य grant चाहिएमा उपयुक्त प्रदायक शृंखला राख्नुहोस्। उदाहरणमा प्रोक्सी खाता छैन; त्यो यातायातको हो, OAuth client ID/secret को होइन। सार्वजनिक मध्यस्थमार्फत अनुमति दिइएको सार्वजनिक token endpoint का लागि HTTP प्रोक्सी सूचीबाट host र port छान्नुहोस्।
ती API कलहरूलाई मार्ग चाहिएको बेला सुरक्षित स्रोतको कनेक्टर पनि कन्फिगर गर्नुहोस्। टोकन र API को सफलता छुट्टाछुट्टै नतिजा हुन्।