प्रॉक्सी से जाने वाला संसाधन 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 की सफलता अलग परिणाम हैं।

संबंधित लेख