Architecture Decision Record

Active theme: Light

← ឧទាហរណ៍កំណត់ត្រាការសម្រេចចិត្ត

កំណត់ត្រាការសម្រេចចិត្តខាងស្ថាបត្យកម្ម៖ ជម្រើសនៃការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ និងការផ្តល់សិទ្ធិ

ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ (authentication) និងការផ្តល់សិទ្ធិ (authorization) របស់កម្មវិធីគេហទំព័រ គឺជាគោលគំនិតសំខាន់ពីរក្នុងការធានាសុវត្ថិភាពការចូលប្រើកម្មវិធី និងសេវាកម្ម។ ទាំងពីរទាក់ទងនឹងអត្តសញ្ញាណរបស់អ្នកប្រើ និងរបៀបដែលសិទ្ធិត្រូវបានផ្តល់ ប៉ុន្តែពួកវាផ្តោតលើទិដ្ឋភាពខុសគ្នា៖

  • ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ (Authentication) គឺជាដំណើរការនៃការផ្ទៀងផ្ទាត់អត្តសញ្ញាណរបស់អ្នកប្រើ ឬប្រព័ន្ធ។
  • ការផ្តល់សិទ្ធិ (Authorization) គឺជាដំណើរការនៃការកំណត់ថាតើធនធាន ឬសកម្មភាពអ្វីខ្លះដែលអ្នកប្រើ ឬប្រព័ន្ធដែលបានផ្ទៀងផ្ទាត់អាចចូលប្រើបាន។

ឥឡូវនេះ ចូរយើងស្វែងយល់ឱ្យស៊ីជម្រៅអំពីពិធីការ និងបច្ចេកវិទ្យាជាក់លាក់ដែលអ្នកបានលើកឡើង ដែលត្រូវបានប្រើជាទូទៅក្នុងកម្មវិធីគេហទំព័រទំនើប សម្រាប់គ្រប់គ្រងការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ និងការផ្តល់សិទ្ធិ។

1. OAuth (Open Authorization)

OAuth គឺជាស្តង់ដារបើកចំហសម្រាប់ការផ្តល់សិទ្ធិ។ វាអនុញ្ញាតឱ្យអ្នកប្រើផ្តល់ការចូលប្រើមានកំណត់ដល់កម្មវិធីភាគីទីបីចំពោះធនធានរបស់ពួកគេ ដោយមិនចាំបាច់ចែករំលែកព័ត៌មានសម្ងាត់ចូលប្រើរបស់ពួកគេ។ គំនិតសំខាន់គឺ ការចូលប្រើដែលបានប្រគល់សិទ្ធិ។ OAuth ត្រូវបានប្រើជារឿយៗក្នុងស្ថានភាពដែលអ្នកប្រើអាចចូលទៅកាន់សេវាកម្មភាគីទីបី (ឧ. ចូលដោយប្រើ Google) ដោយមិនផ្តល់ឈ្មោះអ្នកប្រើ និងពាក្យសម្ងាត់ផ្ទាល់ទៅភាគីទីបីនោះ។

  • លំហូរ: OAuth ជាធម្មតាអនុវត្តតាមលំហូរ ផ្អែកលើថូខឹន (token) ដែលម៉ាស៊ីនមេផ្តល់សិទ្ធិចេញថូខឹនចូលប្រើទៅកម្មវិធីភាគីទីបី។ ថូខឹននេះតំណាងឱ្យសិទ្ធិរបស់អ្នកប្រើ ហើយកម្មវិធីប្រើវាដើម្បីចូលប្រើទិន្នន័យ ឬធនធានរបស់អ្នកប្រើពី API។
  • ឧទាហរណ៍: អ្នកប្រើចូលទៅកាន់កម្មវិធីភាគីទីបីដោយប្រើគណនី Google របស់ពួកគេ។ Google ផ្ទៀងផ្ទាត់អត្តសញ្ញាណរបស់អ្នកប្រើ ហើយបន្ទាប់មកផ្តល់ថូខឹនដែលអនុញ្ញាតឱ្យកម្មវិធីភាគីទីបីចូលប្រើទិន្នន័យ Google មួយចំនួន (ឧ. Google Calendar)។

OAuth មិនដោះស្រាយការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវដោយផ្ទាល់ទេ វាគឺអំពីការផ្តល់ការចូលប្រើ។ សម្រាប់ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ OAuth ត្រូវបានផ្គូផ្គងជារឿយៗជាមួយពិធីការផ្សេងទៀត ដូចជា OpenID Connect។

2. OpenID Connect (OIDC)

OpenID Connect (OIDC) គឺជាស្រទាប់អត្តសញ្ញាណដែលកសាងលើ OAuth 2.0 ដែលបន្ថែមការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវទៅលើសមត្ថភាពផ្តល់សិទ្ធិរបស់ OAuth។ ជាសំខាន់ OpenID Connect ពង្រីក OAuth ដើម្បីដោះស្រាយ ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវរបស់អ្នកប្រើ ហើយផ្តល់វិធីស្តង់ដារសម្រាប់កម្មវិធីក្នុងការផ្ទៀងផ្ទាត់អត្តសញ្ញាណរបស់អ្នកប្រើ។

  • លំហូរ: នៅពេលអ្នកប្រើចូលដោយប្រើ OpenID Connect កម្មវិធីភាគីទីបីស្នើសុំថូខឹនអត្តសញ្ញាណ (ID token) (បន្ថែមលើថូខឹនចូលប្រើ OAuth)។ ថូខឹនអត្តសញ្ញាណមានព័ត៌មានអំពីអ្នកប្រើ (ដូចជាឈ្មោះអ្នកប្រើ អ៊ីមែល និងការអះអាងផ្សេងទៀត)។ នេះអនុញ្ញាតឱ្យកម្មវិធីដឹងថាអ្នកប្រើជានរណា និងថាតើពួកគេត្រូវបានផ្ទៀងផ្ទាត់ឬអត់។
  • ឧទាហរណ៍: ការចូលទៅកាន់សេវាកម្មដូចជា Slack ដោយប្រើគណនី Google របស់អ្នក (Google ជាអ្នកផ្តល់ OpenID Connect) ពាក់ព័ន្ធនឹងការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវតាមរយៈ OpenID Connect ចំណែក OAuth គ្រប់គ្រងការចូលប្រើធនធាន Google របស់អ្នក។

OIDC ធ្វើឱ្យកម្មវិធីភាគីទីបីងាយស្រួលជាងក្នុងការ ផ្ទៀងផ្ទាត់អ្នកប្រើ ខណៈដែលនៅតែអនុញ្ញាតឱ្យមានការគ្រប់គ្រងលម្អិតលើធនធានដែលកម្មវិធីទាំងនោះអាចចូលប្រើ។

3. SAML (Security Assertion Markup Language)

SAML គឺជាស្តង់ដារចាស់ជាងដែលផ្អែកលើ XML ប្រើសម្រាប់ផ្លាស់ប្តូរទិន្នន័យការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ និងការផ្តល់សិទ្ធិរវាងភាគី ជាពិសេសក្នុងស្ថានភាព Single Sign-On (SSO)។ វាត្រូវបានប្រើជាចម្បងក្នុងបរិស្ថានសហគ្រាស ដើម្បីអនុញ្ញាតឱ្យអ្នកប្រើផ្ទៀងផ្ទាត់ម្តង ហើយចូលប្រើកម្មវិធីច្រើនដោយមិនត្រូវបញ្ចូលព័ត៌មានសម្ងាត់ម្តងទៀត។

  • លំហូរ: អ្នកប្រើដំបូងផ្ទៀងផ្ទាត់ជាមួយអ្នកផ្តល់អត្តសញ្ញាណ (IdP)។ IdP បង្កើត SAML assertion ដែលបានចុះហត្ថលេខា ដែលរួមមានអត្តសញ្ញាណរបស់អ្នកប្រើ និងគុណលក្ខណៈពាក់ព័ន្ធ។ assertion ត្រូវបានផ្ញើទៅអ្នកផ្តល់សេវា (SP) ដែលប្រើវាដើម្បីផ្តល់សិទ្ធិចូលប្រើកម្មវិធី។
  • ឧទាហរណ៍: និយោជិតម្នាក់ចូលទៅកាន់វិបផតថលក្រុមហ៊ុនរបស់ពួកគេ (IdP) ហើយត្រូវបានចូលដោយស្វ័យប្រវត្តិទៅកាន់ប្រព័ន្ធផ្សេងទៀតដូចជាអ៊ីមែល CRM ។ល។ ដោយមិនត្រូវបញ្ចូលព័ត៌មានសម្ងាត់ម្តងទៀត។ ដំណើរការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវផ្អែកលើ SAML assertion ដែលផ្ញើដោយ IdP។

SAML ត្រូវបានប្រើជាទូទៅក្នុង ដំណោះស្រាយ SSO សហគ្រាស ហើយដំណើរការបានល្អសម្រាប់កម្មវិធីគេហទំព័រក្នុងបរិស្ថានក្រុមហ៊ុន ប៉ុន្តែវាមិនសូវងាយស្រួលសម្រាប់ឧបករណ៍ចល័តប្រៀបធៀបនឹង OAuth/OIDC។

4. WS-Federation (Web Services Federation)

WS-Federation គឺជាពិធីការមួយទៀតដែលប្រើសម្រាប់ Single Sign-On (SSO) ជាពិសេសក្នុងបរិស្ថានសហគ្រាសផ្អែកលើ Microsoft។ វាជាផ្នែកនៃក្រុមលក្ខណៈបច្ចេកទេស WS- (Web Services)* ហើយអនុញ្ញាតឱ្យមានសហព័ន្ធអត្តសញ្ញាណនៅទូទាំងដែនសុវត្ថិភាពផ្សេងៗ (ដូចជារវាងអង្គការផ្សេងៗ ឬរវាងសេវាកម្មផ្សេងៗ)។

  • លំហូរ: WS-Federation អនុញ្ញាតឱ្យ អ្នកផ្តល់អត្តសញ្ញាណដែលទុកចិត្ត (IdP) ផ្ទៀងផ្ទាត់អ្នកប្រើ និងចេញថូខឹនដែលអ្នកផ្តល់សេវាអាចប្រើសម្រាប់ការផ្តល់សិទ្ធិ។ វាស្រដៀងនឹង SAML ប៉ុន្តែត្រូវបានប្រើជារឿយៗក្នុងស្ថានភាពដែលពឹងផ្អែកខ្លាំងលើបច្ចេកវិទ្យា Microsoft។
  • ឧទាហរណ៍: អ្នកប្រើចូលទៅកាន់កម្មវិធីសហគ្រាសដែលបង្ហោះដោយ Microsoft Azure Active Directory (AD) ហើយអត្តសញ្ញាណរបស់ពួកគេអាចត្រូវបានប្រើដើម្បីចូលប្រើសេវាកម្មសហព័ន្ធផ្សេងទៀត រួមទាំងកម្មវិធីដែលបង្ហោះដោយអ្នកលក់ភាគីទីបី។

ទោះបី WS-Federation ត្រូវបានជំនួសភាគច្រើនដោយពិធីការថ្មីជាងដូចជា OAuth2.0 និង OpenID Connect ក្នុងបរិស្ថានគេហទំព័រទំនើបជាច្រើនក៏ដោយ វានៅតែត្រូវបានប្រើក្នុងប្រព័ន្ធចាស់ ជាពិសេសក្នុងសហគ្រាសដែលផ្តោតលើ Microsoft។

5. LDAP (Lightweight Directory Access Protocol)

LDAP គឺជាពិធីការដែលប្រើដើម្បីចូលប្រើ និងគ្រប់គ្រងសេវាកម្មថតរចនាសម្ព័ន្ធ ដែលប្រើជាទូទៅសម្រាប់ ផ្ទុកព័ត៌មានសម្ងាត់ចូលប្រើរបស់អ្នកប្រើ និងគ្រប់គ្រងការត្រួតពិនិត្យការចូលប្រើក្នុងថតកណ្តាល (ហៅជារឿយៗថា សេវាកម្មថត)។ LDAP មិនមែនជាពិសេសអំពីការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ ឬការផ្តល់សិទ្ធិទេ ប៉ុន្តែត្រូវបានប្រើដើម្បីផ្ទុក និងទាញយកទិន្នន័យអត្តសញ្ញាណ ដែលបន្ទាប់មកត្រូវបានប្រើក្នុងដំណើរការទាំងនោះ។

  • ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ: LDAP អនុញ្ញាតឱ្យកម្មវិធីផ្ទៀងផ្ទាត់អ្នកប្រើ ដោយសាកសួរសេវាកម្មថតសម្រាប់ព័ត៌មានសម្ងាត់ (ដូចជាពាក្យសម្ងាត់)។
  • ការផ្តល់សិទ្ធិ: វាក៏គ្រប់គ្រងតួនាទី និងសិទ្ធិរបស់អ្នកប្រើ ដោយជួយកំណត់ថាតើអ្នកប្រើមានសិទ្ធិចូលប្រើធនធានជាក់លាក់ឬអត់។
  • ឧទាហរណ៍: សហគ្រាសជាច្រើនប្រើថតផ្អែកលើ LDAP (ឧ. Active Directory) សម្រាប់ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ និងការផ្តល់សិទ្ធិ ជាពិសេសក្នុងបរិស្ថាន Windows។

LDAP មានសារៈសំខាន់សម្រាប់សហគ្រាសក្នុងការគ្រប់គ្រងការចូលប្រើរបស់អ្នកប្រើនៅទូទាំងប្រព័ន្ធខាងក្នុង ប៉ុន្តែក្នុងបរិបទគេហទំព័រទំនើប LDAP ត្រូវបានរួមបញ្ចូលជារឿយៗជាមួយពិធីការផ្សេងទៀតដូចជា SAML ឬ OAuth សម្រាប់ការគ្រប់គ្រងអត្តសញ្ញាណកាន់តែពេញលេញ។

6. អ្នកផ្តល់ Social SSO

អ្នកផ្តល់ Single Sign-On (SSO) តាមបណ្តាញសង្គម ដូចជា Facebook, Google, Twitter, GitHub និងផ្សេងទៀត អនុញ្ញាតឱ្យអ្នកប្រើផ្ទៀងផ្ទាត់ចូលទៅកាន់កម្មវិធីភាគីទីបី ដោយប្រើព័ត៌មានសម្ងាត់បណ្តាញសង្គមរបស់ពួកគេ។ នេះគឺជាប្រភេទនៃ ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវផ្អែកលើ OAuth ដែលសេវាកម្មភាគីទីបី (ឧ. Google) ជាអ្នកផ្តល់អត្តសញ្ញាណ។

  • លំហូរ: អ្នកប្រើចុច “ចូលដោយ Google” (ជាឧទាហរណ៍)។ កម្មវិធីបញ្ជូនបន្តទៅ Google ដែលអ្នកប្រើចូល (ប្រសិនបើមិនទាន់បានចូល)។ បន្ទាប់មក Google ផ្តល់ថូខឹនចូលប្រើ ឬថូខឹនអត្តសញ្ញាណទៅកម្មវិធីភាគីទីបី ដែលអាចត្រូវបានប្រើដើម្បីផ្ទៀងផ្ទាត់អ្នកប្រើ ហើយប្រហែលជាចូលប្រើទិន្នន័យរបស់ពួកគេ។
  • ឧទាហរណ៍: កម្មវិធីជាច្រើនអនុញ្ញាតឱ្យអ្នកចូលដោយប្រើព័ត៌មានសម្ងាត់ Google ឬ Facebook របស់អ្នក។ កម្មវិធីនឹងប្រើ OAuth ឬ OpenID Connect នៅពីក្រោយឆាក ដើម្បីផ្ទៀងផ្ទាត់អត្តសញ្ញាណរបស់អ្នក ហើយក្នុងករណីខ្លះចូលប្រើទិន្នន័យបណ្តាញសង្គមមួយចំនួន។

Social SSO គឺជាវិធីសាស្ត្រងាយស្រួល និងត្រូវបានទទួលយកយ៉ាងទូលំទូលាយសម្រាប់ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ ព្រោះវាកាត់បន្ថយការលំបាកសម្រាប់អ្នកប្រើ ដែលប្រហែលជាមិនចង់បង្កើតឈ្មោះអ្នកប្រើ និងពាក្យសម្ងាត់មួយទៀត។


សេចក្តីសង្ខេបនៃភាពខុសគ្នា៖

  • OAuth: ប្រើសម្រាប់ការផ្តល់សិទ្ធិ អនុញ្ញាតឱ្យកម្មវិធីភាគីទីបីចូលប្រើទិន្នន័យអ្នកប្រើ ដោយមិនបង្ហាញព័ត៌មានសម្ងាត់។
  • OpenID Connect: ពង្រីក OAuth ដើម្បីផ្តល់ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ ដែលអនុញ្ញាតឱ្យកម្មវិធីផ្ទៀងផ្ទាត់អត្តសញ្ញាណអ្នកប្រើ។
  • SAML: ពិធីការផ្អែកលើ XML ប្រើសម្រាប់ SSO ជារឿយៗក្នុងបរិស្ថានសហគ្រាស។
  • WS-Federation: ពិធីការជាក់លាក់របស់ Microsoft សម្រាប់សហព័ន្ធអត្តសញ្ញាណ ប្រើក្នុងប្រព័ន្ធចាស់។
  • LDAP: ពិធីការសម្រាប់សាកសួរសេវាកម្មថតដើម្បីផ្ទៀងផ្ទាត់អ្នកប្រើ និងគ្រប់គ្រងការផ្តល់សិទ្ធិ។
  • អ្នកផ្តល់ Social SSO: ប្រព័ន្ធផ្អែកលើ OAuth (ដូចជា Google, Facebook) ដែលអនុញ្ញាតឱ្យកម្មវិធីភាគីទីបីផ្ទៀងផ្ទាត់អ្នកប្រើ ដោយប្រើព័ត៌មានសម្ងាត់បណ្តាញសង្គមរបស់ពួកគេ។

បច្ចេកវិទ្យានីមួយៗទាំងនេះមានចំណុចខ្លាំង និងករណីប្រើប្រាស់ផ្ទាល់ខ្លួន ហើយក្នុងកម្មវិធីទំនើប អ្នកអាចឃើញការផ្សំគ្នានៃពួកវាត្រូវបានប្រើសម្រាប់ទិដ្ឋភាពផ្សេងៗនៃសុវត្ថិភាព (ឧ. OAuth/OIDC សម្រាប់ការចូលប្រើ API, SAML សម្រាប់ SSO សហគ្រាស)។