Spring Reactive OAuth2: прокси аркылуу client_credentials токен сурамдары
Spring Security 6.5 client_credentials үчүн токен WebClient'ин провайдер аркылуу иш жүзүндө колдонулган authorized-client менеджерине туташтырыңыз.
Прокси аркылуу өткөн WebClient ресурсу токен алуу башка коннекторду колдонсо, API чакырууга чейин эле ишке ашпай калышы мүмкүн. Spring Security 6.5 реактивдүү client_credentials агымы үчүн үч бөлүктү тең туташтырыңыз:
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 токендин HTTP кардарын дайындайт; provider.setAccessTokenResponseClient аны grant провайдерине дайындайт; manager.setAuthorizedClientProvider ошол провайдерди орнотот. Бул менеджерди чыныгы OAuth фильтринде же authorized-client жумуш агымында колдонуңуз.
HttpClient жана ProxyProvider — Reactor Netty типтери. WebClient жана анын коннектору — Spring WebFlux типтери. Бар болгон ReactiveClientRegistrationRepository ди registrations катары жана ReactiveOAuth2AuthorizedClientService ду authorizedClients катары бериңиз.
Бул провайдер client_credentials иштетет; башка grant керек болсо, тиешелүү провайдер тизмегин сактаңыз. Мисалда прокси эсеби жок; ал OAuth client ID/secret эмес, транспорт катмарына таандык. Коомдук ортомчу аркылуу уруксат берилген коомдук token endpoint үчүн HTTP прокси тизмесинен host жана port тандаңыз.
Ошол API чакырууларына маршрут керек болгондо корголгон ресурстун коннекторун да конфигурациялаңыз. Токендин жана API'нин ийгилиги өзүнчө жыйынтыктар.