កម្មវិធីឌីកូដ JWT នេះបំបែក JSON Web Token ជាបីផ្នែក ហើយបង្ហាញ Header និង Payload ជាទម្រង់ JSON ងាយស្រួលអាន។ Claim ពេលវេលាដូចជា exp, iat និង nbf ត្រូវបានបម្លែងទៅជាកាលបរិច្ឆេទក្នុងស្រុក និង UTC ជាមួយនឹងពេលវេលាប្រៀបធៀប ដូច្នេះអ្នកអាចមើលដឹងភ្លាមៗថាតើ Token ត្រូវបានចេញនៅពេលណា ហើយវាបានផុតកំណត់ហើយឬនៅ។
Access Token និង ID Token ច្រើនតែផ្ទុកលេខសម្គាល់អ្នកប្រើប្រាស់ អ៊ីមែល និងសិទ្ធិអនុញ្ញាត ដូច្នេះការបិទភ្ជាប់វាទៅក្នុងគេហទំព័រផ្តេសផ្តាសគឺមានហានិភ័យខ្ពស់។ នៅទីនេះ Token ត្រូវបានឌីកូដដោយ JavaScript ធម្មតានៅក្នុង Tab កម្មវិធីរុករករបស់អ្នកផ្ទាល់ វាមិនដែលត្រូវបានផ្ញើទៅកាន់ម៉ាស៊ីនមេ ឬរក្សាទុកឡើយ។ អ្នកថែមទាំងអាចបិទភ្ជាប់តម្លៃ Authorization: Bearer … ទាំងមូលបាន ដោយប្រព័ន្ធនឹងកាត់ពាក្យខាងមុខចេញដោយស្វ័យប្រវត្តិ។
របៀបប្រើឧបករណ៍ កម្មវិធីឌីកូដ JWT
- ចម្លង Token ពីកម្មវិធីរបស់អ្នក DevTools របស់កម្មវិធីរុករក ឬពីចម្លើយតបរបស់ API។
- បិទភ្ជាប់វាទៅក្នុងប្រអប់។ ពាក្យ Bearer នៅខាងមុខនឹងត្រូវលុបចេញដោយស្វ័យប្រវត្តិ។
- អាន Header ដែលបានឌីកូដ (ក្បួនដោះស្រាយ និងប្រភេទ) ព្រមទាំង Payload Claims។
- ពិនិត្យបន្ទាត់ស្ថានភាពដើម្បីមើលថាតើ Token នៅមានសុពលភាព ផុតកំណត់ ឬមិនទាន់ដំណើរការ។
- ប្រើប៊ូតុង ចម្លង ដើម្បីយក JSON របស់ Header ឬ Payload ដែលបានរៀបចំរួច។
ហេតុអ្វីប្រើ កម្មវិធីឌីកូដ JWT របស់ ToolOrca
- ឌីកូដ Header និង Payload ភ្លាមៗ
- បង្ហាញ exp, iat និង nbf ជាកាលបរិច្ឆេទពិតប្រាកដ
- បង្ហាញស្ថានភាពផុតកំណត់ / មិនទាន់មានសុពលភាពច្បាស់លាស់
- គាំទ្រ Claim ទម្រង់ Base64URL និង UTF-8
- ជូនដំណឹងអំពី Token ដែលគ្មានហត្ថលេខា "alg: none"
- Token មិនចេញក្រៅពីឧបករណ៍របស់អ្នកឡើយ
រចនាសម្ព័ន្ធរបស់ JWT
JWT ផ្សំឡើងពីអក្សរដែលបានអ៊ិនកូដជា Base64URL ចំនួនបីផ្នែកភ្ជាប់គ្នាដោយសញ្ញាចុច (.)៖ header.payload.signature។ Header បញ្ជាក់ថាតើក្បួនដោះស្រាយមួយណាត្រូវបានប្រើដើម្បីចុះហត្ថលេខាលើ Token (ឧទាហរណ៍ HS256 ឬ RS256)។ ចំណែក Payload ផ្ទុក Claims ដូចជា Claim ស្តង់ដារ iss (អ្នកចេញ), sub (ប្រធានបទ), aud (ទស្សនិកជន) និង exp (ពេលផុតកំណត់) ព្រមទាំងទិន្នន័យផ្ទាល់ខ្លួនផ្សេងៗដែលអ្នកចេញបានបន្ថែម។
Payload គឺគ្រាន់តែត្រូវបានអ៊ិនកូដប៉ុណ្ណោះ មិនមែនត្រូវបានអ៊ិនគ្រីបឡើយ។ នរណាក៏ដោយដែលមាន Token នេះគឺអាចអានវាបាន ដែលនេះជាអ្វីដែលឧបករណ៍នេះកំពុងធ្វើ។ កុំដាក់ពាក្យសម្ងាត់ ឬទិន្នន័យសម្ងាត់នៅក្នុង Payload របស់ JWT ឱ្យសោះ។
ការឌីកូដមិនមែនជាការផ្ទៀងផ្ទាត់ទេ
កម្មវិធីឌីកូដនេះមិនពិនិត្យហត្ថលេខាឡើយ។ Token ដែលបានឌីកូដអាចជា Token ក្លែងបន្លំ ឬត្រូវបានគេកែប្រែក៏ថាបាន។ ម៉ាស៊ីនមេរបស់អ្នកត្រូវតែផ្ទៀងផ្ទាត់ហត្ថលេខាជាមួយ Secret ឬ Public Key ជានិច្ច ព្រមទាំងពិនិត្យមើល exp, nbf, iss និង aud មុនពេលជឿជាក់លើ Claim ណាមួយ។ សូមប្រើទំព័រនេះសម្រាប់តែការ Debug និងការពិនិត្យមើលប៉ុណ្ណោះ។
សំណួរដែលសួរញឹកញាប់
តើការបិទភ្ជាប់ JWT របស់ខ្ញុំនៅទីនេះមានសុវត្ថិភាពទេ?
បាទ/ចាស មានសុវត្ថិភាព។ Token ត្រូវបានឌីកូដនៅលើឧបករណ៍របស់អ្នកផ្ទាល់ដោយប្រើ JavaScript ក្នុងកម្មវិធីរុករក។ គ្មានអ្វីត្រូវបានផ្ទុកឡើង កត់ត្រាទុក ឬរក្សាទុកឡើយ។ ទោះជាយ៉ាងណាក៏ដោយ សូមទុកដាក់ Token ដែលកំពុងប្រើប្រាស់ដូចជាពាក្យសម្ងាត់ និងជៀសវាងការចែករំលែកវាក្នុងរូបភាព Screenshot ឬការជជែកកម្សាន្ត។
តើឧបករណ៍នេះផ្ទៀងផ្ទាត់ហត្ថលេខារបស់ JWT ដែរឬទេ?
ទេ ឧបករណ៍នេះគ្រាន់តែឌីកូដ Header និង Payload ប៉ុណ្ណោះ។ ការផ្ទៀងផ្ទាត់ទាមទារ Secret ឬ Public Key សម្រាប់ចុះហត្ថលេខា ហើយគួរតែធ្វើឡើងដោយម៉ាស៊ីនមេរបស់អ្នក ឬ Library គ្រប់គ្រងការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ។
តើ exp, iat និង nbf មានន័យដូចម្តេច?
exp គឺជាពេលវេលាផុតកំណត់, iat គឺជាពេលវេលាដែល Token ត្រូវបានចេញ, ហើយ nbf មានន័យថា "មិនមែនមុនពេល" — Token មិនត្រូវទទួលយកមុនពេលនេះឡើយ។ ទាំងបីនេះសុទ្ធតែជាត្រាពេលវេលា Unix គិតជាវិនាទី។
ហេតុអ្វីបានជា Token របស់ខ្ញុំឌីកូដមិនចេញ?
សូមពិនិត្យមើលថាអ្នកបានចម្លង Token ទាំងមូលដោយមានសញ្ញាចុចទាំងពីរ និងគ្មានសញ្ញាសម្រង់ ឬដកឃ្លាបន្ថែម។ ប្រសិនបើ Payload មិនមែនជា JSON ទេ នោះ Token ប្រហែលជា JWE ដែលត្រូវបានអ៊ិនគ្រីប ដែលមិនអាចអានបានដោយគ្មានសោសម្ងាត់ឡើយ។
តើខ្ញុំអាចឌីកូដ Token ពី Auth0, Firebase, Cognito ឬ Azure AD បានទេ?
បាទ/ចាស បាន។ JWT ស្តង់ដារណាក៏ដំណើរការដែរ រួមទាំង ID Token និង Access Token ពីសេវាកម្មទាំងនេះ ឱ្យតែវាជា JWT ដែលមានហត្ថលេខា (JWS) ហើយមិនមែនជា Token ប្រភេទ Opaque ឬត្រូវបានអ៊ិនគ្រីប។