Spring Reactive OAuth2: proxy zahtjevi za token client_credentials
Za client_credentials u Spring Security 6.5 povežite token WebClient preko pružatelja s upraviteljem authorized-client koji se stvarno koristi.
Resurs WebClient koji ide kroz proxy može ipak pasti prije poziva API-ja ako dohvat 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 dodjeljuje ga pružatelju granta; manager.setAuthorizedClientProvider instalira tog pružatelja. Koristite ovaj upravitelj u stvarnom OAuth filtru ili tijeku rada authorized-client.
HttpClient i ProxyProvider su Reactor Netty tipovi. WebClient i njegov konektor su Spring WebFlux tipovi. Predajte postojeći ReactiveClientRegistrationRepository kao registrations i ReactiveOAuth2AuthorizedClientService kao authorizedClients.
Ovaj pružatelj obrađuje client_credentials; zadržite odgovarajući lanac pružatelja ako su potrebni drugi grantovi. Primjer nema proxy račun — on bi pripadao prijenosu, a ne OAuth client ID/secret. Za javni token endpoint dopušten kroz javni posrednik odaberite host i port s popisa HTTP proxyja.
Konfigurirajte i konektor zaštićenog resursa kada tim pozivima API-ja treba ruta. Uspjeh tokena i uspjeh API-ja odvojeni su ishodi.