proxy ئارقىلىق ئۆتىدىغان بايلىق 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 لازىم بولسا مۇۋاپىق تەمىنلىگۈچى زەنجىرىنى ساقلاڭ. مىسالدا proxy ھېساباتى يوق؛ ئۇ OAuth client ID/secret ئەمەس، توشۇش قاتلىمىغا تەۋە. ئاممىۋى ۋاسىتىچى ئارقىلىق رۇخسەت قىلىنغان ئاممىۋى token endpoint ئۈچۈن HTTP proxy تىزىملىكىدىن host ۋە port تاللاڭ.

شۇ API چاقىرىقلىرى يولغا ئېھتىياجلىق بولغاندا قوغدىلىدىغان بايلىقنىڭ ئۇلىغۇچىنىمۇ سەپلەڭ. توكېن ۋە API نىڭ مۇۋەپپەقىيىتى ئايرىم نەتىجىلەر.

مۇناسىۋەتلىك ماقالىلەر