ਪ੍ਰੌਕਸੀ ਰਾਹੀਂ ਜਾਣ ਵਾਲਾ ਸਰੋਤ 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 ਦੀ ਸਫਲਤਾ ਵੱਖਰੇ ਨਤੀਜੇ ਹਨ।

ਸੰਬੰਧਿਤ ਲੇਖ