پراکسی سے گزرنے والا وسیلہ 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 کی کامیابی الگ الگ نتائج ہیں۔

متعلقہ مضامین