วิธีการใช้งานระบบตรวจสอบสิทธิ์แบบสองปัจจัย (2FA) ใน Node.js ด้วยแอพตัวตรวจสอบสิทธิ์
เรียนรู้วิธีการใช้งานระบบตรวจสอบสิทธิ์แบบสองปัจจัย (2FA) ใน Node.js โดยใช้แอพตัวตรวจสอบสิทธิ์, TOTP และไลบรารี otplib คำแนะนำทีละขั้นตอนนี้ครอบคลุมทุกอย่างตั้งแต่การสร้าง QR โค้ดไปจนถึงการยืนยันโค้ดการตรวจสอบสิทธิ์
ระบบตรวจสอบสิทธิ์แบบสองปัจจัย (2FA) คืออะไร
ในแอปพลิเคชันแบบดั้งเดิม เรามักใช้ อีเมล/ชื่อผู้ใช้/โทรศัพท์ เป็นตัวระบุตัวตน โดยการรวมตัวระบุตัวตนเหล่านี้กับรหัสผ่านหรือรหัสยืนยันที่สอดคล้องกัน เราสามารถดำเนินการกระบวนการตรวจสอบสิทธิ์ให้สมบูรณ์ได้
อย่างไรก็ตาม ในสถานการณ์ที่ต้องการความปลอดภัยสูงกว่า การพึ่งพาตัวระบุตัวตนเพียงอย่างเดียวไม่เพียงพอ นี่เป็นเพราะตัวระบุตัวตนเหล่านี้และข้อมูลการยืนยันที่สอดคล้องกันอาจเสี่ยงต่อการรั่วไหลได้
นี่เป็นเหตุผลที่ระบบตรวจสอบสิทธิ์แบบสองปัจจัย (2FA) มาช่วย - เป็นการเพิ่มความปลอดภัยอีกขั้นที่ทำให้ผู้ใช้ต้องให้ปัจจัยการตรวจสอบสองแบบที่แตกต่างกันเพื่อยืนยันตัวตนของพวกเขา เพื่อให้แน่ใจว่าผู้ที่พยายามเข้าถึงบัญชีเป็นผู้ใช้ที่ถูกต้องจริง
วิธีการ 2FA ที่พบบ่อยได้แก่:
- การตรวจสอบสิทธิ์ TOTP โดยใช้แอพตัวตรวจสอบสิทธิ์
- การตรวจสอบสิทธิ์ทางชีวมาตร
- การตรวจสอบสิทธิ์ตามอุปกรณ์
- รหัสยืนยันผ่าน SMS
ในบทแนะนำนี้ เราจะเน้นไปที่การใช้งาน 2FA แบบ TOTP โดยใช้แอพตัวตรวจสอบสิทธิ์ร่วมกับไลบรารี otplib ในแอปพลิเคชัน Node.js ของคุณ
การตรวจสอบสิทธิ์ TOTP คืออะไร?
TOTP ย่อมาจาก รหัสผ่านที่ใช้ครั้งเดียวที่อิงตามเวลา ตามที่ Wikipedia กล่าวไว้ มันคือ อัลกอริธึมคอมพิวเตอร์ ที่สร้าง รหัสผ่านที ่ใช้ครั้งเดียว (OTP) ซึ่งใช้อิงตามเวลาในขณะนั้นเป็นแหล่งของความไม่ซ้ำกัน
โดยมีกุญแจลับ TOTP ที่แชร์กันระหว่างโทรศัพท์ของผู้ใช้และเซิร์ฟเวอร์แอพ โทรศัพท์ของผู้ใช้และเซิร์ฟเวอร์แอพสามารถสร้างโค้ด TOTP เดียวกันในเวลาเดียวกันได้:
เนื่องจากการสร้าง TOTP อิงตามเวลา ดังนั้นสามารถคำนวณแบบออฟไลน์ได้ นอกจากนี้ TOTP ยังสร้างเป็นสตริงของตัวเลข ทำให้ง่ายและเป็นมิตรกับผู้ใช้ ดังนั้นการยืนยัน TOTP จึงมักถูกใช้เป็นวิธีการตรวจสอบสิทธิ์สองปัจจัย
เมื่อต้องการใช้ TOTP เป็นวิธีการตรวจสอบสิทธิ์สองปัจจัย ผู้ใช้มักพบกับความท้าทายในการจัดเก็บรหัสลับ TOTP และการสร้างโค้ด TOTP นี่คือที่ที่แอพตัวตรวจสอบสิทธิ์เข้ามาช่วย เราสามารถใช้แอพตัวตรวจสอบสิทธิ์ในการจัดเก็บรหัสลับ TOTP และแอพตัวตรวจสอบสิทธิ์จะสร้างโค้ด TOTP ให้คุณโดยอัตโนมัติ เมื่อจำเป็นต้องยืนยัน คุณเพียงแค่ต้องเปิดแอพตัวตรวจสอบสิทธิ์ และคุณจะได้รับโค้ด TOTP ที่ตรงกับรหัสลับ TOTP แอพตัวตรวจสอบสิทธิ์ยอดนิยมได้แก่ Google Authenticator และ Microsoft Authenticator
กระบวนการใช้งาน TOTP เพื่อเป็ นการตรวจสอบสิทธิ์สองปัจจัยมีสองขั้นตอน:
- ผูกกุญแจลับ TOTP กับผู้ใช้
- ยืนยันโค้ด TOTP ของผู้ใช้โดยใช้กุญแจลับ TOTP ที่เกี่ยวข้อง
กระบวนการผูก TOTP กับผู้ใช้มีดังนี้:
เมื่อผู้ใช้ได้ผูก TOTP แล้ว พวกเขาสามารถใช้ได้เมื่อยืนยัน กระบวนการมีดังนี้:
ตามที่แสดงในไดอะแกรม ด้านผู้ใช้เราจะใช้แอพตัวตรวจสอบสิทธิ์เพื่อจัดการกุญแจลับ TOTP และสร้างโค้ด TOTP ทางฝั่งเซิร์ฟเวอร์ เราจำเป็นต้องสนับสนุนการสร้างกุญแจลับ TOTP และตรวจสอบความถูกต้องของโค้ด TOTP ที่ผู้ใช้ส่งมา ในบทความนี้ เราจะใช้ otpllib เป็นตัวอย่างในการรวมฟังก์ชันที่เกี่ยวข้องกับ TOTP ทางฝั่งเซิร์ฟเวอร์
ใช้งาน 2FA แบบ TOTP โดยใช้ otplib สำหรับแอพ Node.js ของคุณ
ถือว่าแอพของคุณพัฒนาขึ้นบน Express.js และผู้ใช้ล็อกอินผ่านทาง /sign-in
แผนการเพื่อรองรับ TOTP ในกระบวนการล็อกอินของผู้ใช้มีดังนี้:
- เมื่อผู้ใช้ยังไม่ได้ผูก TOTP ให้ส่งกุญแจลับ TOTP ไปยังผู้ใช้ในรูปของ QR โค้ดและแจ้งให้ผูก TOTP
- เมื่อผู้ใช้ได้ผูก TOTP แล้ว ให้แจ้งให้ยืนยัน TOTP
ก่อนอื่น มาติดตั้ง dependencies สำหรับโปรเจกต์กัน: otplib
และ qrcode
:
ต่อไป มาปรับปรุงจุดสิ้นสุด /sign-in
ของเรากัน
ตามการใช้งานของเรา เมื่อผู้ใช้ยังไม่ได้ผูก TOTP เราจะส่ง QR โค้ดไปยังส่วนหน้าของผู้ใช้:
ผู้ใช้สแกน QR โค้ดด้วยแอพตัวตรวจสอบสิทธิ์ จากนั้นแอพตัวตรวจสอบสิทธิ์จะสร้างโค้ด TOTP และจัดเก็บกุญแจลับ TOTP ที่เกี่ยวข้อง
ผู้ใช้ส่งโค้ด TOTP ที่ได้รับกลับไปยังเซิร์ฟเวอร์แอพ หากโค้ดยืนยันสำเร็จ เราก็สามารถผูก TOTP นี้กับผู้ใช้ได้
ดังนั้น มาใช้งาน API /verify-totp
เพื่อรับโค้ด TOTP ที่ส่งมาจากผู้ใช้กัน:
แบบนี้ เราได้ผูก TOTP ให้ผู้ใช้สำเร็จเรียบร้อย ต่อมาเมื่อผู้ใช้ล็อกอิน เพียงแต่เปิดแอพตัวตรวจสอบสิทธิ์ ส่งโค้ดตรวจสอบที่ตรงกับกุญแจลับ TOTP ที่ผูกไว้ก่อนหน้านี้ และกระบวนการตรวจสอบจะเสร็จสมบูรณ์
ใน API /verify-totp
เราใช้กุญแจลับ TOTP ที่ผูกไว้กับผู้ใช้ในการตรวจสอบโค้ด TOTP
สรุป
ตามบทความนี้ คุณควรสามารถนำการยืนยันผ่านแอพตัวตรวจสอบสิทธิ์มาใช้กับแอพของคุณได้แล้ว
อย่างไรก็ตาม นี่เป็นเพียงตัวอย่างง่ายๆ เมื่อแอพของคุณมีขนาดใหญ่หรือคาดว่าจะซับซ้อน การผสานรวมวิธีใหม่ในการตรวจสอบสิทธิ์อาจต้องใช้ค่าใช้จ่ายมาก
ข่าวดีคือ: Logto ในฐานะที่เป็นผู้ให้บริการโซลูชันการตรวจสอบสิทธิ์แบบครบวงจร เสนอการสนับสนุน Multi-factor Authentication (MFA) รวมถึงการยืนยันผ่านแอพตัวตรวจสอบสิทธิ์ โดยการใช้ Logto ทำให้คุณสามารถผสานรวมกระบวนการเข้าสู่ระบบที่ปลอดภัยและมีประสิทธิภาพจาก MFA ลงในแอปพลิเคชันของคุณได้อย่างง่ายดายภายในไม่กี่นาที!