Spring Reactive OAuth2: talbiet għal token client_credentials permezz ta' proxy
Għal client_credentials fi Spring Security 6.5, qabbad il-WebClient tat-token permezz tal-fornitur mal-maniġer authorized-client li fil-fatt jintuża.
Riżorsa WebClient li tgħaddi minn proxy xorta tista' tfalli qabel is-sejħa API tagħha jekk il-kisba tat-token tuża konnettur ieħor. Għall-fluss reattiv client_credentials ta' Spring Security 6.5 qabbad it-tliet partijiet kollha:
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 jassenja l-klijent HTTP tat-token; provider.setAccessTokenResponseClient jassenjah lill-fornitur tal-grant; manager.setAuthorizedClientProvider jinstalla dak il-fornitur. Uża dan il-maniġer fil-filter OAuth reali jew fil-fluss tax-xogħol authorized-client.
HttpClient u ProxyProvider huma tipi Reactor Netty. WebClient u l-konnettur tiegħu huma tipi Spring WebFlux. Għaddi l-ReactiveClientRegistrationRepository eżistenti bħala registrations u l-ReactiveOAuth2AuthorizedClientService bħala authorizedClients.
Dan il-fornitur jimmaniġġja client_credentials; żomm katina ta' fornituri xierqa jekk huma meħtieġa grants oħra. L-eżempju m'għandux kont tal-proxy; dan ikun jappartjeni għat-trasport u mhux għall-OAuth client ID/secret. Għal token endpoint pubbliku permess permezz ta' intermedjarju pubbliku, agħżel host u port mil-lista tal-proxy HTTP.
Ikkonfigura wkoll il-konnettur tar-riżorsa protetta meta dawk is-sejħiet API jeħtieġu r-rotta. Is-suċċess tat-token u s-suċċess tal-API huma riżultati separati.