ప్రాక్సీ ద్వారా వెళ్లే వనరు 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 విజయం వేర్వేరు ఫలితాలు.

సంబంధిత వ్యాసాలు