Vir WebClient, ki gre skozi proxy, lahko vseeno odpove pred klicem API, če pridobivanje žetona uporablja drug konektor. Za reaktivni tok client_credentials v Spring Security 6.5 povežite vse tri dele:

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 dodeli odjemalca HTTP za žeton; provider.setAccessTokenResponseClient ga dodeli ponudniku granta; manager.setAuthorizedClientProvider namesti tega ponudnika. Ta upravitelj uporabite v dejanskem filtru OAuth ali v delovnem toku authorized-client.

HttpClient in ProxyProvider sta tipa Reactor Netty. WebClient in njegov konektor sta tipa Spring WebFlux. Posredujte obstoječi ReactiveClientRegistrationRepository kot registrations in ReactiveOAuth2AuthorizedClientService kot authorizedClients.

Ta ponudnik obdeluje client_credentials; ohranite ustrezno verigo ponudnikov, če so potrebni drugi granti. Primer nima računa proxy; ta bi spadal k transportu in ne k OAuth client ID/secret. Za javni token endpoint, dovoljen prek javnega posrednika, izberite gostitelja in vrata s seznama proxyjev HTTP.

Nastavite tudi konektor zaščitenega vira, ko te klici API potrebujejo pot. Uspeh žetona in uspeh API sta ločena izida.

Sorodni članki