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 គឺជាលទ្ធផលដាច់ដោយឡែក។