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 चे यश वेगवेगळे निष्कर्ष आहेत.