Spring Security 6.5: បញ្ជូនការផ្លាស់ប្តូរកូដអនុញ្ញាត OAuth តាមប្រូកស៊ី
ផ្តល់ឱ្យអតិថិជនឆ្លើយតបតូខេននៃកូដអនុញ្ញាតរបស់ Spring Security នូវ RestClient ដែលដឹងពីប្រូកស៊ី ខណៈរក្សាឧបករណ៍បំប្លែង OAuth និងអ្នកគ្រប់គ្រងកំហុស។
កម្មវិធីរុករកឈានដល់អ្នកផ្តល់អត្តសញ្ញាណ បន្ទាប់មកការចូលប្រើបរាជ័យនៅពេលកម្មវិធីផ្លាស់ប្តូរកូដអនុញ្ញាតដែលបានត្រឡប់មកវិញ។ ការផ្លាស់ប្តូរនោះគឺជាសំណើចេញពីម៉ាស៊ីនមេកម្មវិធី ដែលមានអតិថិជន HTTP ផ្ទាល់ខ្លួន។
សម្រាប់ API ដែលផ្អែកលើ RestClient ដែលមានក្នុង Spring Security 6.5 សូមផ្តល់រោងចក្រសំណើដែលដឹងពីប្រូកស៊ី ដល់អតិថិជនឆ្លើយតបតូខេននៃកូដអនុញ្ញាត៖
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
factory.setProxy(new java.net.Proxy(
java.net.Proxy.Type.HTTP,
new java.net.InetSocketAddress("proxy.example", 8080)));
factory.setConnectTimeout(5000);
factory.setReadTimeout(15000);
RestClient tokenHttp = RestClient.builder()
.requestFactory(factory)
.messageConverters(converters -> {
converters.clear();
converters.add(new FormHttpMessageConverter());
converters.add(new OAuth2AccessTokenResponseHttpMessageConverter());
})
.defaultStatusHandler(new OAuth2ErrorResponseErrorHandler())
.build();
RestClientAuthorizationCodeTokenResponseClient tokenClient =
new RestClientAuthorizationCodeTokenResponseClient();
tokenClient.setRestClient(tokenHttp);
ថ្នាក់ឧបករណ៍បំប្លែង និងអ្នកគ្រប់គ្រងកំហុសរក្សាឥរិយាបថសំណើតូខេនដែលបានចងក្រងរបស់ Spring Security។ RestClient ទូទៅដែលកំណត់សម្រាប់តែ API JSON មិនពាក់ព័ន្ធមិនមែនជាការជំនួសសមមូលទេ។
ភ្ជាប់ tokenClient ដូចគ្នាទៅការកំណត់សុវត្ថិភាពដែលមានស្រាប់៖
http.oauth2Login(login -> login
.tokenEndpoint(token -> token
.accessTokenResponseClient(tokenClient)));
ទាំងនេះជាបំណែកកំណត់សម្រាប់កម្មវិធីដែលមានការចុះឈ្មោះអតិថិជន និង SecurityFilterChain រួចហើយ។ ពួកវាជ្រើសរើសប្រូកស៊ី HTTP ដោយគ្មានការផ្ទៀងផ្ទាត់។ ប្រូកស៊ីដែលត្រូវការព័ត៌មានសម្ងាត់ត្រូវការការកំណត់ផ្ទៀងផ្ទាត់ដែលត្រូវគ្នានៃការដឹកជញ្ជូនដែលបានជ្រើស។ សម្រាប់ចំណុចបញ្ចប់តូខេន HTTPS ដែលអាចចូលបានជាសាធារណៈលើផ្លូវសាធារណៈដែលបានអនុញ្ញាត ធាតុ HTTP ពីបញ្ជីប្រូកស៊ី HTTPអាចបំពេញអាសយដ្ឋានប្រូកស៊ីដែលគ្មានគណនីនោះ។
រក្សាម៉ាស៊ីនប្រូកស៊ីឱ្យដាច់ពីច្រក និងគ្រោង URL របស់វា។ ទុក URI តូខេនរបស់អ្នកផ្តល់អត្តសញ្ញាណជាគោលដៅ។ ឧទាហរណ៍នេះមិនជំនួសការផ្ទៀងផ្ទាត់វិញ្ញាបនបត្រទេ។
សំណើក្រោយៗត្រូវការការត្រួតពិនិត្យកម្មសិទ្ធិផ្ទាល់ខ្លួន។ ការទាញយក UserInfo ការផ្លាស់ប្តូរតូខេនធ្វើឱ្យស្រស់ ការផ្តល់ client-credentials និងការហៅ API ការពារអាចប្រើវត្ថុអតិថិជនផ្សេងទៀត។ កំណត់អតិថិជនគាំទ្រដែលត្រូវគ្នានៅពេលប្រតិបត្តិការនោះក៏ត្រូវការផ្លូវដែរ។ សម្រាប់លំហូរ client_credentials បែបប្រតិកម្មរបស់ Spring Security 6.5 សូមកំណត់អតិថិជនតូខេនបែបប្រតិកម្ម និងអ្នកផ្តល់ការផ្តល់របស់វាដោយឡែក។
ឧទាហរណ៍ចាស់ដែលប្រើ OAuth2RestTemplate និង AccessTokenProvider ជាកម្មសិទ្ធិរបស់គម្រោង Spring Security OAuth ចាស់ជាង។ ជ្រើសរើស API ដែលកម្មវិធីដំឡើងប្រើ មុនពេលសម្របកូដ។ កុំលាយវត្ថុទាំងនោះទៅក្នុងការកំណត់នេះ។