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 విజయం వేర్వేరు ఫలితాలు.