Spring Reactive OAuth2: proxy မှတဆင့် client_credentials တိုကင် တောင်းဆိုမှုများ
Spring Security 6.5 ၏ client_credentials တွင် တိုကင် WebClient ကို ပံ့ပိုးသူမှတဆင့် အမှန်တကယ်အသုံးပြုသော authorized-client မန်နေဂျာသို့ ချိတ်ဆက်ပါ။
proxy မှတဆင့်သွားသော အရင်းအမြစ် WebClient သည် တိုကင်ရယူမှုတွင် အခြား connector ကို အသုံးပြုပါက API ခေါ်မှုမတိုင်မီ မအောင်မြင်နိုင်ပါ။ Spring Security 6.5 ၏ reactive 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 client ကို သတ်မှတ်သည်၊ provider.setAccessTokenResponseClient သည် ၎င်းကို grant ပံ့ပိုးသူထံ သတ်မှတ်သည်၊ manager.setAuthorizedClientProvider သည် ထိုပံ့ပိုးသူကို တပ်ဆင်သည်။ ဤမန်နေဂျာကို အမှန်တကယ် OAuth filter သို့မဟုတ် authorized-client အလုပ်စီးကြောင်းတွင် အသုံးပြုပါ။
HttpClient နှင့် ProxyProvider သည် Reactor Netty အမျိုးအစားများဖြစ်သည်။ WebClient နှင့် ၎င်း၏ connector သည် Spring WebFlux အမျိုးအစားများဖြစ်သည်။ ရှိပြီးသား ReactiveClientRegistrationRepository ကို registrations အဖြစ်လည်းကောင်း၊ ReactiveOAuth2AuthorizedClientService ကို authorizedClients အဖြစ်လည်းကောင်း ပေးပါ။
ဤပံ့ပိုးသူသည် client_credentials ကို ကိုင်တွယ်သည်၊ အခြား grant များလိုအပ်ပါက သင့်လျော်သော ပံ့ပိုးသူကွင်းဆက်ကို ထိန်းထားပါ။ ဥပမာတွင် proxy အကောင့်မရှိပါ၊ ၎င်းသည် OAuth client ID/secret မဟုတ်ဘဲ သယ်ယူပို့ဆောင်ရေးအလွှာနှင့် သက်ဆိုင်သည်။ အများပြည်သူ အလယ်အလတ်မှတဆင့် ခွင့်ပြုထားသော အများပြည်သူ token endpoint အတွက် HTTP proxy စာရင်းမှ host နှင့် port ကို ရွေးပါ။
ထို API ခေါ်မှုများတွင် လမ်းကြောင်းလိုအပ်ပါက ကာကွယ်ထားသော အရင်းအမြစ်၏ connector ကိုလည်း ပြင်ဆင်ပါ။ တိုကင်အောင်မြင်မှုနှင့် API အောင်မြင်မှုသည် သီးခြားရလဒ်များဖြစ်သည်။