การยืนยัน SMS สำหรับ MFA
Logto รองรับฟังก์ชันการยืนยันตัวตนหลายปัจจัย (MFA) ผ่าน SMS ที่ช่วยเพิ่มความปลอดภัยของบัญชีโดยการส่งรหัสยืนยันแบบใช้ครั้งเดียวไปยังหมายเลขโทรศัพท์ที่ลงทะเบียนของผู้ใช้ การใช้ SMS MFA เป็นปัจจัยการยืนยันตัวตนลำดับที่สอง และสามารถผสมกับปัจจัย MFA อื่น ๆ (เช่น TOTP, passkeys, รหัสสำรอง) เพื่อให้ผู้ใช้มีตัวเลือกการยืนยันตัวตนสองขั้นตอนที่ยืดหยุ่น
แนวคิด
การยืนยัน SMS หรือที่เรียกว่าการยืนยันหมายเลขโทรศัพท์ เป็นหนึ่งในวิธี MFA ที่เข้าถึงได้ง่ายที่สุด โดยอาศัยความแพร่หลายของโทรศัพท์มือถือในการส่งรหัสยืนยันแบบชั่วคราวและใช้ครั้งเดียวไปยังอุปกรณ์ของผู้ใช้โดยตรงผ่านข้อความ SMS แตกต่างจากแอปยืนยันตัวตนที่ต้องติดตั้งซอฟต์แวร์เพิ่มเติม SMS MFA ใช้โครงสร้างพื้นฐานของข้อความที่มีอยู่ในทุกอุปกรณ์มือถือ ทำให้ผู้ใช้สามารถใช้งานได้ทันทีโดยไม่ต้องตั้งค่าใด ๆ
ตั้งค่าการยืนยัน SMS สำหรับ MFA
ขั้นตอนที่ 1: ตั้งค่าตัวเชื่อมต่อ SMS และแม่แบบข้อความ
- ไปที่ Console > ตัวเชื่อมต่อ > ตัวเชื่อมต่ออีเมลและ SMS
- เลือกตัวเชื่อมต่อ SMS ที่เหมาะสม (Twilio, SMS Aero ฯลฯ)
- กำหนดค่าพารามิเตอร์การเชื่อมต่อ
- ตั้งค่าแม่แบบข้อความ SMS สำหรับ MFA โดยใช้ประเภทการใช้งานที่กำหนดไว้
MfaVerification
usageType สำหรับการยืนยัน MFABindMFA
usageType สำหรับการผูก MFA
- ทดสอบการทำงานของตัวเชื่อมต่อเพื่อให้แน่ใจว่าข้อความถูกส่งอย่างถูกต้อง
- ดูรายละเอียดการตั้งค่าตามผู้ให้บริการได้ที่ ตัวเชื่อมต่อ SMS
ขั้นตอนที่ 2: เปิดใช้งาน SMS สำหรับ MFA
- ไปที่ Console > การยืนยันตัวตนหลายปัจจัย
- เปิดใช้งานปัจจัย "รหัสยืนยัน SMS" แนะนำให้ใช้ SMS MFA ร่วมกับปัจจัย MFA อื่น ๆ (TOTP, passkeys, รหัสสำรอง) เพื่อลดการพึ่งพาปัจจัยเดียว
- กำหนดนโยบาย MFA ที่ต้องการ (บังคับใช้ / ไม่บังคับ)
- บันทึกการเปลี่ยนแปลงการตั้งค่า
-
ข้อจำกัดของวิธีลงชื่อเข้าใช้: รหัสยืนยัน SMS ไม่สามารถใช้เป็นทั้ง วิธีลงชื่อเข้าใช้ (1FA) และปัจจัย MFA (2FA) พร้อมกันได้ เลือกหนึ่งกระบวนการยืนยันตัวตนต่อการใช้งาน SMS หนึ่งครั้ง
-
ความเข้ากันได้กับวิธีสมัครสมาชิก: รหัสยืนยัน SMS สามารถใช้ได้ทั้งสำหรับวิธีสมัครสมาชิกและ MFA พร้อมกัน Logto จะปรับปรุงขั้นตอนการลงทะเบียนของผู้ใช้ปลายทางตามนโยบาย MFA ที่เลือกไว้ เพื่อหลีกเลี่ยงการขอรหัสยืนยัน SMS ซ้ำสำหรับหมายเลขโทรศัพท์เดียวกัน
-
ความเข้ากันได้กับการกู้คืนรหัสผ่าน: แม้ว่ารหัสยืนยัน SMS จะสามารถใช้ได้ทั้งกับ ลืมรหัสผ่าน และ MFA พร้อมกัน แต่ ไม่แนะนำ ให้ตั้งค่าแบบนี้ เนื่องจากจะลดประสิทธิภาพความปลอดภัยของ MFA เพราะผู้ใช้อาจข้าม MFA ได้โดยใช้รหัสยืนยัน SMS สำหรับลืมรหัสผ่านเพื่อรีเซ็ตรหัสผ่าน แล้วใช้รหัสผ่านใหม่สำหรับการยืนยันตัวตนหลัก (1FA) ตามด้วยวิธี SMS เดิมสำหรับ MFA
ขั้นตอนการตั้งค่า SMS MFA
หน้าตั้งค่า MFA อาจปรากฏระหว่างการลงทะเบียนผู้ใช้หรือหลังจากลงชื่อเข้าใช้ ขึ้นอยู่กับ นโยบาย MFA ที่คุณตั้งค่าไว้ ผู้ใช้อาจเปิดใช้งาน SMS MFA ได้จาก หน้าตั้งค่าบัญชี ของตนเองด้วย
ขั้นตอนการตั้งค่า SMS MFA จะได้รับผลกระทบจากปัจจัยต่อไปนี้:
- จำนวนปัจจัย MFA หลัก: หากมีปัจจัยหลักหลายรายการ ผู้ใช้ต้องเลือกหนึ่งรายการเพื่อตั้งค่า ปัจจัยหลักคือวิธี MFA ที่ไม่ใช่รหัสสำรอง
- เปิดใช้งานรหัสสำรอง: เมื่อเปิดใช้งาน รหัสสำรองจะถูกสร้างอัตโนมัติหลังจากตั้งค่าปัจจัย MFA หลัก ผู้ใช้จะถูกแจ้งให้บันทึก
- การตั้งค่าตัวระบุสมัครสมาชิก: หากหมายเลขโทรศัพท์ถูกใช้เป็น ตัวระบุสมัครสมาชิก และผู้ใช้ได้ยืนยันแล้วด้วยรหัส SMS ระหว่างลงทะเบียน ระบบจะผูกหมายเลขนั้นเป็นปัจจัย MFA โดยอัตโนมัติและไม่ต้องยืนยันซ้ำ หากมีปัจจัยหลักอื่น ๆ UI จะแสดงตัวเลือก “เพิ่มการยืนยัน 2 ขั้นตอน” (ผู้ใช้อาจข้ามได้) และแสดงชัดเจนว่า MFA เปิดใช้งานแล้ว
- ข้อมูลผู้ใช้ที่มีอยู่: เมื่อผู้ใช้ที่มีอยู่ตั้งค่า MFA หลังจากลงชื่อเข้าใช้ จะต้องผ่านการยืนยันตัวตนหลักก่อน แล้วจึงตั้งค่า MFA หากบัญชีมีหมายเลขโทรศัพท์หลักที่ยืนยันแล้ว ขั้นตอนจะเหมือนกับกรณีตัวระบุสมัครสมาชิกข้างต้น
ด้านล่างนี้คือตัวอย่างสถานการณ์การผูก SMS MFA ที่พบบ่อย 3 แบบ
สถานการณ์ที่ 1: ใช้หมายเลขโทรศัพท์สำหรับ MFA เท่านั้น (ขั้นตอนปกติ)
เมื่อหมายเลขโทรศัพท์ไม่ใช่หนึ่งในตัวระบุสมัครสมาชิก และใช้สำหรับ MFA เท่านั้น ให้ดำเนินการตามขั้นตอนปกติ:
- หากมีปัจจัย SMS MFA เพียงรายการเดียว ให้แสดงหน้าตั้งค่าสำหรับปัจจัยนั้นโดยตรง
- หากมีปัจจัย MFA หลักหลายรายการ ให้แสดงหน้ารายการ “ตั้งค่า MFA” และให้ผู้ใช้เลือกปัจจัยที่จะตั้งค่า
ตัวอย่าง:
สมัครสมาชิก: อีเมล + รหัสยืนยันอีเมล + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + รหัสสำรอง
อีเมล + รหัสยืนยันอีเมล + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + รหัสสำรอง

สมัครสมาชิก: อีเมล + รหัสยืนยันอีเมล + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + Passkeys + Authenticator app OTP + รหัสสำรอง
อีเมล + รหัสยืนยันอีเมล + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + Passkeys + Authenticator app OTP + รหัสสำรอง

สถานการณ์ที่ 2: หมายเลขโทรศัพท์ถูกยืนยันเป็นตัวระบุสมัครสมาชิก
หากหมายเลขโทรศัพท์เป็นตัวระบุสมัครสมาชิกและผู้ใช้ได้ยืนยันแล้วด้วยรหัส SMS ระหว่างลงทะเบียน ระบบจะผูกหมายเลขนั้นเป็นปัจจัย MFA โดยอัตโนมัติ — ไม่ต้องยืนยันซ้ำ
ตัวอย่าง:
สมัครสมาชิก: หมายเลขโทรศัพท์ + รหัสยืนยัน SMS + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + รหัสสำรอง
หมายเลขโทรศัพท์ + รหัสยืนยัน SMS + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + รหัสสำรอง

สถานการณ์ที่ 3: หมายเลขโทรศัพท์ถูกยืนยันแต่มีปัจจัยหลักหลายรายการ
หากหมายเลขโทรศัพท์ถูกยืนยันตอนสมัครสมาชิก (เป็นตัวระบุสมัครสมาชิก) แต่บัญชีมีปัจจัย MFA หลักหลายรายการ (เช่น SMS ร่วมกับ passkeys หรือแอปยืนยันตัวตน) UI จะแจ้งผู้ใช้ด้วย “เพิ่มการยืนยัน 2 ขั้นตอน” ผู้ใช้อาจเลือกเพิ่มปัจจัยอื่นหรือข้ามก็ได้ โดยจะแจ้งชัดเจนว่า MFA เปิดใช้งานแล้ว
ตัวอย่าง:
สมัครสมาชิก: หมายเลขโทรศัพท์ + รหัสยืนยัน SMS + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + Passkeys + Authenticator app OTP + รหัสสำรอง
หมายเลขโทรศัพท์ + รหัสยืนยัน SMS + รหัสผ่าน
| MFA: รหัสยืนยัน SMS + Passkeys + Authenticator app OTP + รหัสสำรอง

ขั้นตอนการยืนยัน SMS MFA
เมื่อผู้ใช้ที่เปิดใช้งาน SMS MFA ลงชื่อเข้าใช้ หลังจากผ่านการยืนยันตัวตนหลัก (1FA) สำเร็จแล้ว จะถูกขอให้ยืนยันตัวตนด้วยรหัสยืนยัน SMS เป็นปัจจัยการยืนยันตัวตนลำดับที่สอง (2FA)
หากมีปัจจัย MFA หลายรายการ ผู้ใช้สามารถเลือกจากปัจจัยที่ตั้งค่าไว้ ระบบจะกำหนดลำดับการแสดงปัจจัย MFA ตามลำดับความสำคัญที่ตั้งค่าไว้ใน ตั้งค่า MFA
ตัวอย่าง:
ลงชื่อเข้าใช้: ที่อยู่อีเมล + รหัสผ่าน
| MFA: รหัสยืนยัน SMS (ใช้ครั้งล่าสุด) / Authenticator app OTP / รหัสสำรอง
ที่อยู่อีเมล + รหัสผ่าน
| MFA: รหัสยืนยัน SMS (ใช้ครั้งล่าสุด) / Authenticator app OTP / รหัสสำรอง

การจัดการข้อผิดพลาด
-
ยังไม่ได้ผูกหมายเลขโทรศัพท์
- รหัสข้อผิดพลาด:
session.mfa.mfa_factor_not_enabled
- วิธีจัดการ: แนะนำให้ผู้ใช้ผูกหมายเลขโทรศัพท์ก่อน
- รหัสข้อผิดพลาด:
-
รหัสยืนยันไม่ถูกต้อง
- รหัสข้อผิดพลาด:
verification_code.code_mismatch
- วิธีจัดการ: แจ้งให้ผู้ใช้กรอกใหม่ จำกัดจำนวนครั้งที่ลอง
- รหัสข้อผิดพลาด:
-
รหัสยืนยันหมดอายุ
- รหัสข้อผิดพลาด:
verification_code.expired
- วิธีจัดการ: แจ้งให้ผู้ใช้ขอรหัสยืนยันใหม่
- รหัสข้อผิดพลาด:
-
เกินขีดจำกัดการส่ง
- รหัสข้อผิดพลาด:
connector.rate_limit_exceeded
- วิธีจัดการ: แสดงเวลารอ จำกัดการส่งซ้ำ
- รหัสข้อผิดพลาด: