Spring Reactive OAuth2: прокси барања за токен client_credentials
За client_credentials во Spring Security 6.5, поврзете го токен WebClient преку провајдерот со управителот authorized-client што навистина се користи.
Ресурс WebClient што оди преку прокси сè уште може да не успее пред неговиот API повик ако добивањето токен користи друг конектор. За реактивниот тек client_credentials во Spring Security 6.5 поврзете ги сите три дела:
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 дозволен преку јавен посредник, изберете host и port од списокот на HTTP прокси.
Конфигурирајте го и конекторот на заштитениот ресурс кога тие API повици ја бараат рутата. Успехот на токенот и успехот на API се одделни исходи.