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 ಯ ಯಶಸ್ಸು ಬೇರೆ ಬೇರೆ ಫಲಿತಾಂಶಗಳು.