Resurss WebClient, kas iet caur starpniekserveri, joprojām var neizdoties pirms API izsaukuma, ja tokena iegūšana izmanto citu savienotāju. Spring Security 6.5 reaktīvajai client_credentials plūsmai savienojiet visas trīs daļas:

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 piešķir tokena HTTP klientu; provider.setAccessTokenResponseClient piešķir to grant sniedzējam; manager.setAuthorizedClientProvider instalē šo sniedzēju. Izmantojiet šo pārvaldnieku faktiskajā OAuth filtrā vai authorized-client darbplūsmā.

HttpClient un ProxyProvider ir Reactor Netty tipi. WebClient un tā savienotājs ir Spring WebFlux tipi. Nododiet esošo ReactiveClientRegistrationRepository kā registrations un ReactiveOAuth2AuthorizedClientService kā authorizedClients.

Šis sniedzējs apstrādā client_credentials; saglabājiet piemērotu sniedzēju ķēdi, ja nepieciešami citi granti. Piemērā nav starpniekservera konta; tas piederētu transportam, nevis OAuth client ID/secret. Publiskam token endpoint, kas atļauts caur publisku starpnieku, izvēlieties host un port no HTTP starpniekserveru saraksta.

Konfigurējiet arī aizsargātā resursa savienotāju, kad šiem API izsaukumiem nepieciešams maršruts. Tokena un API panākumi ir atsevišķi rezultāti.

Saistītie raksti