'n Geproxyde hulpbron WebClient kan steeds voor sy API-oproep misluk as die tokenverkryging 'n ander connector gebruik. Vir Spring Security 6.5 se reaktiewe client_credentials-vloei verbind jy al drie 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 ken die token-HTTP-kliënt toe; provider.setAccessTokenResponseClient ken dit aan die toekenningsverskaffer toe; manager.setAuthorizedClientProvider installeer daardie verskaffer. Gebruik hierdie bestuurder in die werklike OAuth-filter of die authorized-client-werkvloei.

HttpClient en ProxyProvider is Reactor Netty-tipes. WebClient en sy connector is Spring WebFlux-tipes. Gee die bestaande ReactiveClientRegistrationRepository as registrations en ReactiveOAuth2AuthorizedClientService as authorizedClients.

Hierdie verskaffer hanteer client_credentials; behou 'n gepaste verskaffersketting as ander toekennings nodig is. Die voorbeeld het geen proxy-rekening nie; dit sou by die transport hoort, nie by die OAuth-kliënt-ID/geheim nie. Vir 'n publieke token-eindpunt wat deur 'n publieke tussenganger toegelaat word, kies gasheer- en poortkandidate uit die HTTP-proxylys.

Konfigureer ook die connector vir beskermde hulpbronne wanneer daardie API-oproepe die roete nodig het. Token- en API-sukses is aparte uitkomste.

Verwante artikels