អត្ថបទនេះ សរសេររៀបរាប់អំពីការបង្កើត មុខងារauthentication ដោយប្រើប្រាស់ 2FA រវាយ
Spring Boot ជាមួយនឹង Google Authenticator App ដូចនេះដើម្បីអាចLogin ចូល Web Application របស់យើងបាន តម្រូវអោយបញ្ចូល username (ដែលទីនេះយើងយក email ) password និង TOTP (ដែលគេស្គាល់ថា ជា Time-based One-Time Password)
ក្នុងអត្ថបទនេះ យើងនឹងមិនសរសេរនិងពន្យល់លម្អិតអំពី TOTP ទេ (ខិខិ សើច) ដោយដាក់ជាតំណភ្ជាប់ទីនេះដើម្បីលោកអ្នកអាចស្វែងយលបន្ថែមដោយខ្លួនឯង
អ្វីដែលត្រូវអនុវត្តរួមមាន៖
ការបង្កើត Spring Boot Application លោកអ្នកអាចបង្កើតបានតាមរយៈ Spring Initializr
ដែលជាមួយគ្នានេះយើងបានប្រើប្រាស់ dependencies មួយចំនួនដូចជា security, web។បន្ថែមពីលើនេះ យើងបានដាក់ចូលនូវ dependency មួយទៀតគឺ Java One Time Password API (aerogear-otp-java)
ក្នុងការអនុវត្តនេះ យើងនឹងរក្សាទុកទិន្នន័យរបស់យើងនៅក្នុង database ហើយនៅទីនេះយើងបានប្រើប្រាស់ postgreSQL
ដែលនេះជា sample table
CREATE TABLE springtotp.app_user ( id serial NOT NULL, email varchar(200) NOT NULL, password varchar(200) NOT NULL, firstname varchar(100) NOT NULL, lastname varchar(100) NOT NULL, secret varchar(50) NULL, active int2 NOT NULL DEFAULT 0, created_date timestamp NOT NULL DEFAULT now(), created_by int4 NOT NULL, CONSTRAINT app_user_email_key UNIQUE (email), CONSTRAINT app_user_pkey PRIMARY KEY (id) );
តាមរយៈ table ខាងលើ កាលណា user ចុះឈ្មោះ/register ដំបូង តម្រូវអោយបញ្ចូល នាមត្រកូល នាមខ្លួន email និង password បន្ទាប់មកនឹង generate ជា secret key មួយ ហើយរក្សាទុកក្នុង database ដោយ active = 0; បន្ទាប់មក វានឹងបង្ហាញ QRCode សម្រាប់ user scan ដោយប្រើប្រាស់Google Authenticator App ដើម្បីទទួលបានលេខកូដ ៦ខ្ទង់ វាយបញ្ចូល ដើម្បីបញ្ជាក់ការចុះឈ្មោះដោយជោគជ័យ។
Registration Form |
Registration Confirmation |
otpauth://totp/LABEL%3Asample%40gmail.com?secret=${secret}&issuer=${issuer}
Finish the Registration |
បន្ទាប់ពីបានវាយបញ្ចូលលេខកូដ៦ខ្ទង់ត្រឹមត្រូវ យើងនឹង update active =1 មានន័យថាដំណើរការ។ សូមបញ្ជាក់ផងដែល យើងបានប្រើប្រាស់
com.google.zxing សម្រាប់បង្កើតជា qrcode
angularjs + spring-boot thymeleaf សម្រាប់ client side
នៅអត្ថបទន្ទាប់ទៀត យើងនឹងសរសេរអំពី ការ Login សូមអរគុណ