Spring Reactive OAuth2: proxiko client_credentials token eskaerak
Spring Security 6.5eko client_credentials-erako, konektatu token WebClient hornitzailearen bidez benetan erabiltzen den authorized-client kudeatzailera.
Proxy bidez doan WebClient baliabideak huts egin dezake API deia baino lehen, tokena lortzeak beste connector bat erabiltzen badu. Spring Security 6.5eko client_credentials fluxu erreaktiborako, konektatu hiru piezak:
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 token HTTP bezeroa esleitzen du; provider.setAccessTokenResponseClient grant hornitzaileari esleitzen dio; manager.setAuthorizedClientProvider hornitzaile hori instalatzen du. Erabili kudeatzaile hau benetako OAuth iragazkian edo authorized-client lan-fluxuan.
HttpClient eta ProxyProvider Reactor Netty motak dira. WebClient eta bere connectorra Spring WebFlux motak dira. Eman lehendik dagoen ReactiveClientRegistrationRepository registrations gisa eta ReactiveOAuth2AuthorizedClientService authorizedClients gisa.
Hornitzaile honek client_credentials kudeatzen du; mantendu hornitzaile-kate egokia beste grant batzuk behar badira. Adibideak ez du proxy konturik; hori garraioari legokioke, ez OAuth client ID/secret-ari. Bitartekari publiko bidez onartutako token endpoint publikorako, aukeratu host eta port HTTP proxy zerrendatik.
Konfiguratu baliabide babestuaren connectorra ere API dei horiek ibilbidea behar dutenean. Tokenaren eta APIren arrakasta emaitza bereiziak dira.