Auðlind WebClient sem fer í gegnum proxy getur samt mistekist fyrir API-kallið ef öflun táknsins notar annan connector. Fyrir hvarfvirka client_credentials flæðið í Spring Security 6.5 skaltu tengja öll þrjú hlutverkin:

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 úthlutar HTTP-biðlarans fyrir táknið; provider.setAccessTokenResponseClient úthlutar honum til grant-veitandans; manager.setAuthorizedClientProvider setur upp þann veitanda. Notaðu þennan stjórnanda í raunverulegu OAuth-síunni eða authorized-client vinnuflæðinu.

HttpClient og ProxyProvider eru Reactor Netty-gerðir. WebClient og connector þess eru Spring WebFlux-gerðir. Gefðu núverandi ReactiveClientRegistrationRepository sem registrations og ReactiveOAuth2AuthorizedClientService sem authorizedClients.

Þessi veitandi annast client_credentials; haltu viðeigandi veitandakeðju ef aðrir grantar eru nauðsynlegir. Dæmið hefur engan proxy-reikning; hann tilheyrði flutningnum en ekki OAuth client ID/secret. Fyrir opinbert token-endpoint sem er leyft í gegnum opinberan millilið skaltu velja host og port úr HTTP-proxy listanum.

Stilltu einnig connector verndaðrar auðlindar þegar þessi API-köll þurfa leiðina. Árangur tákns og árangur API eru aðskildar niðurstöður.

Tengdir greinar