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 ସଫଳତା ଅଲଗା ଫଳାଫଳ।