Spring Reactive OAuth2: proxy-Ufroen fir client_credentials-Token
Fir client_credentials a Spring Security 6.5, verbënnt den Token-WebClient iwwer de Provider mat deem authorized-client-Manager, deen tatsächlech benotzt gëtt.
Eng Ressource WebClient, déi iwwer e Proxy geet, kann nach virun hirem API-Opruff feelen, wann d'Tokenbeschafung en anere Connector benotzt. Fir de reaktive client_credentials-Floss a Spring Security 6.5 verbënnt all dräi Deeler:
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 weist den Token-HTTP-Client zou; provider.setAccessTokenResponseClient weist en dem Grant-Provider zou; manager.setAuthorizedClientProvider installéiert dee Provider. Benotzt dëse Manager am tatsächlechen OAuth-Filter oder am authorized-client-Workflow.
HttpClient an ProxyProvider si Reactor-Netty-Typen. WebClient an säi Connector si Spring-WebFlux-Typen. Gitt den existéierenden ReactiveClientRegistrationRepository als registrations an den ReactiveOAuth2AuthorizedClientService als authorizedClients.
Dëse Provider behandelt client_credentials; behält eng passend Providerkette, wann aner Grants noutwenneg sinn. D'Beispill huet kee Proxykont; dat géif zum Transport gehéieren an net zum OAuth client ID/secret. Fir en ëffentlechen Token-Endpunkt, deen iwwer en ëffentlechen Intermédiaire erlaabt ass, wielt Host a Port aus der HTTP-Proxy-Lëscht.
Konfiguréiert och den Connector vun der geschützter Ressource, wann déi API-Opruff d'Streck brauchen. Token- an API-Erfolleg sinn getrennt Resultater.