Resurs WebClient koji ide kroz proxy ipak može pasti prije poziva API-ja ako preuzimanje tokena koristi drugi konektor. Za reaktivni tok client_credentials u Spring Security 6.5 povežite sva tri dijela:

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 dodjeljuje HTTP klijent tokena; provider.setAccessTokenResponseClient ga dodjeljuje provajderu granta; manager.setAuthorizedClientProvider instalira taj provajder. Koristite ovaj menadžer u stvarnom OAuth filteru ili toku authorized-client.

HttpClient i ProxyProvider su Reactor Netty tipovi. WebClient i njegov konektor su Spring WebFlux tipovi. Dostavite postojeći ReactiveClientRegistrationRepository kao registrations i ReactiveOAuth2AuthorizedClientService kao authorizedClients.

Ovaj provajder obrađuje client_credentials; zadržite odgovarajući lanac provajdera ako su potrebni drugi grantovi. Primjer nema proxy račun; on bi pripadao transportu, a ne OAuth client ID/secret. Za javni token endpoint dozvoljen kroz javni posrednik odaberite host i port sa liste HTTP proxyja.

Konfigurišite i konektor zaštićenog resursa kada tim pozivima API-ja treba ruta. Uspjeh tokena i uspjeh API-ja su odvojeni ishodi.

Povezani članci