Ang resource na WebClient na dumadaan sa proxy ay maaari pa ring mabigo bago ang tawag nito sa API kung ibang connector ang ginagamit sa pagkuha ng token. Para sa reaktibong daloy ng client_credentials ng Spring Security 6.5, ikonekta ang tatlong bahagi:

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 ang nagtatalaga ng token HTTP client; itinatakda ito ng provider.setAccessTokenResponseClient sa grant provider; ini-install ng manager.setAuthorizedClientProvider ang provider na iyon. Gamitin ang manager na ito sa aktwal na OAuth filter o authorized-client workflow.

HttpClient at ProxyProvider ay mga uri ng Reactor Netty. Ang WebClient at ang connector nito ay mga uri ng Spring WebFlux. Ibigay ang umiiral na ReactiveClientRegistrationRepository bilang registrations at ang ReactiveOAuth2AuthorizedClientService bilang authorizedClients.

Pinangangasiwaan ng provider na ito ang client_credentials; panatilihin ang angkop na hanay ng provider kung kailangan ang iba pang grant. Walang proxy account ang halimbawa; iyon ay nabibilang sa transport at hindi sa OAuth client ID/secret. Para sa pampublikong token endpoint na pinapayagan sa pamamagitan ng pampublikong tagapamagitan, pumili ng host at port mula sa listahan ng HTTP proxy.

I-configure din ang connector ng protektadong resource kapag kailangan ng mga tawag API na iyon ang ruta. Magkahiwalay na resulta ang tagumpay ng token at ng API.

Kaugnay na mga artikulo