ข้ามไปยังเนื้อหาหลัก

อุปกรณ์ที่เชื่อถือได้สำหรับ MFA

อุปกรณ์ที่เชื่อถือได้สำหรับ MFA ช่วยให้ผู้ใช้ข้ามการยืนยัน MFA ซ้ำ ๆ บนเบราว์เซอร์ที่พวกเขาไว้วางใจ หลังจากการยืนยันหรือการตั้งค่า MFA ที่เข้าเงื่อนไข ผู้ใช้สามารถเลือกที่จะเชื่อถือเบราว์เซอร์บนหน้า เชื่อถืออุปกรณ์นี้ (Trust this device) แยกต่างหากในตอนท้ายของการลงชื่อเข้าใช้หรือสมัครสมาชิก Logto จะจัดเก็บข้อมูลรับรองที่มีอายุจำกัดไว้ในคุกกี้ first-party ในการลงชื่อเข้าใช้ครั้งถัดไป หากข้อมูลรับรองยังถูกต้อง จะสามารถข้ามขั้นตอนการยืนยัน MFA ได้โดยไม่ต้องมีการโต้ตอบจากผู้ใช้

อุปกรณ์ที่เชื่อถือได้ไม่ใช่ปัจจัย MFA ใหม่ และไม่ได้เปลี่ยนแปลงเวลาที่ Logto ต้องการ MFA อุปกรณ์นี้สามารถใช้ได้เฉพาะกับขั้นตอน MFA ในกระบวนการลงชื่อเข้าใช้เท่านั้น ไม่สามารถใช้แทนการยืนยันตัวตน การยืนยันล่าสุด การกู้คืนบัญชี การจัดการปัจจัย MFA หรือการดำเนินการที่สำคัญอื่น ๆ ของบัญชีได้

อุปกรณ์ที่เชื่อถือได้ทำงานอย่างไร​

เมื่อการลงชื่อเข้าใช้ถึงขั้นตอนการยืนยัน MFA Logto จะ:

  1. ประเมินนโยบาย MFA ที่มีอยู่เพื่อพิจารณาว่าต้องใช้ MFA หรือไม่
  2. ตรวจสอบว่าอุปกรณ์ที่เชื่อถือได้ถูกเปิดใช้งานสำหรับ tenant และได้รับอนุญาตจากทุกองค์กรที่ผู้ใช้สังกัดอยู่หรือไม่
  3. ตรวจสอบคุกกี้ของเบราว์เซอร์กับข้อมูลบันทึกฝั่งเซิร์ฟเวอร์ที่ใช้งานอยู่สำหรับผู้ใช้ที่ระบุ
  4. ดำเนินการ MFA อัตโนมัติเมื่อข้อมูลรับรองถูกต้อง หากไม่ถูกต้อง Logto จะลบข้อมูลรับรองที่ไม่ถูกต้องและดำเนินการ MFA แบบปกติต่อไป

เชื่อถืออุปกรณ์ระหว่างลงชื่อเข้าใช้หรือสมัครสมาชิก​

ประสบการณ์การลงชื่อเข้าใช้แบบ built-in จะแสดงหน้า เชื่อถืออุปกรณ์นี้ (Trust this device) แยกต่างหากในตอนท้ายของกระบวนการลงชื่อเข้าใช้หรือสมัครสมาชิกที่เข้าเงื่อนไข หลังจากกรอกโปรไฟล์และขั้นตอน MFA ที่จำเป็น การเชื่อถือเบราว์เซอร์เป็นการเลือกโดยเจตนาบนหน้านี้ แยกจากการยืนยันหรือการตั้งค่า MFA

หน้าดังกล่าวจะแสดงเฉพาะเมื่ออุปกรณ์ที่เชื่อถือได้ถูกเปิดใช้งานสำหรับ tenant ได้รับอนุญาตจากทุกองค์กรที่ผู้ใช้สังกัดอยู่ และการโต้ตอบปัจจุบันมีหลักฐาน MFA ที่เข้าเงื่อนไข:

  • การยืนยัน MFA สำเร็จด้วยแอป authenticator OTP ที่เปิดใช้งาน, passkey (WebAuthn), รหัสยืนยันทางอีเมล หรือรหัสยืนยันทาง SMS
  • การผูกแอป authenticator หรือ passkey สำเร็จระหว่างการตั้งค่า MFA รวมถึงการตั้งค่าระหว่างสมัครสมาชิก

หน้าดังกล่าวจะไม่แสดงระหว่างการรีเซ็ตรหัสผ่าน หรือเมื่อการโต้ตอบไม่มีหลักฐาน MFA ที่เข้าเงื่อนไข การยืนยันด้วยรหัสสำรอง (backup code) หรือมีเพียงข้อมูลรับรองอุปกรณ์ที่เชื่อถือได้เดิมจะไม่เข้าเงื่อนไข ดังนั้นหน้าดังกล่าวจะไม่แสดงทุกครั้งที่ลงชื่อเข้าใช้หรือสมัครสมาชิก การเลือก ข้าม (Skip) ก่อนหน้านี้ก็สามารถระงับการแสดงหน้านี้ได้เช่นกัน ตามที่อธิบายด้านล่าง

บนหน้านี้ ผู้ใช้สามารถเลือกได้ว่า:

  • เชื่อถืออุปกรณ์นี้เป็นเวลา N วัน (Trust this device for N days): เลือกใช้งานตามระยะเวลาที่กำหนด Logto จะสร้างข้อมูลบันทึกอุปกรณ์ที่เชื่อถือได้และคุกกี้ข้อมูลรับรองหลังจากการโต้ตอบสำเร็จเท่านั้น
  • ข้าม (Skip): ดำเนินการต่อโดยไม่สร้างอุปกรณ์ที่เชื่อถือได้ การข้ามหน้านี้ไม่ได้ข้ามการยืนยันหรือการตั้งค่า MFA ที่จำเป็น

เมื่อผู้ใช้เลือก ข้าม (Skip) Logto จะจัดเก็บคุกกี้ opt-out แยกต่างหากที่ผูกกับ tenant และผู้ใช้ในเบราว์เซอร์ปัจจุบัน อายุของคุกกี้นี้เท่ากับระยะเวลา trust ที่กำหนดในขณะข้าม ตราบใดที่เบราว์เซอร์ยังมีคุกกี้นี้ การลงชื่อเข้าใช้ครั้งถัดไปจะไม่แสดงหน้านี้อีก หลังจากหมดอายุหรือถูกลบ กระบวนการที่เข้าเงื่อนไขในภายหลังสามารถแสดงหน้านี้ได้อีกครั้ง คุกกี้ opt-out ไม่ได้ให้สิทธิ์เชื่อถืออุปกรณ์หรือข้าม MFA

เชื่อถืออุปกรณ์หลังจากเลือกข้าม:

หากผู้ใช้เลือก ข้าม (Skip) แล้วต้องการเชื่อถือเบราว์เซอร์ปัจจุบันในภายหลัง วิธีที่แนะนำคือ ลบคุกกี้ opt-out ที่เกี่ยวข้องกับโดเมน Logto ผ่านการตั้งค่าคุกกี้ของเบราว์เซอร์หรือ developer tools โดยชื่อคุกกี้จะขึ้นต้นด้วย __Host-logto-device-trust-opt-out-

หรือจะลบคุกกี้ทั้งหมดสำหรับโดเมน Logto ก็ได้

หลังจากดำเนินการอย่างใดอย่างหนึ่ง ให้ลงชื่อเข้าใช้อีกครั้ง ดำเนินการยืนยันหรือการตั้งค่า MFA ที่เข้าเงื่อนไขให้เสร็จ และเลือก เชื่อถืออุปกรณ์นี้เป็นเวลา N วัน (Trust this device for N days) เมื่อหน้าดังกล่าวปรากฏ

การสร้างอุปกรณ์ที่เชื่อถือได้และการอัปเดตข้อมูลหลังลงชื่อเข้าใช้เป็นแบบ best effort ดังนั้นหากล้มเหลวจะไม่ทำให้การยืนยันตัวตนที่สำเร็จอยู่แล้วล้มเหลว

กำหนดนโยบายอุปกรณ์ที่เชื่อถือได้​

นโยบายระดับโกลบอล​

ไปที่ Console > Multi-factor authentication และกำหนดค่า อุปกรณ์ที่เชื่อถือได้ (Trusted devices):

  • เปิดหรือปิดอุปกรณ์ที่เชื่อถือได้สำหรับ tenant โดยค่าเริ่มต้นจะปิดอยู่
  • กำหนดระยะเวลา trust เป็นจำนวนเต็มระหว่าง 1 ถึง 365 วัน ค่าเริ่มต้นคือ 30 วัน

ระยะเวลาจะถูกกำหนดตายตัวเมื่อสร้างอุปกรณ์ที่เชื่อถือได้ การใช้งานอุปกรณ์จะไม่ขยายเวลาหมดอายุ และการเปลี่ยนแปลงระยะเวลาจะมีผลเฉพาะกับอุปกรณ์ที่สร้างใหม่เท่านั้น

การปิดนโยบายระดับโกลบอลจะป้องกันไม่ให้อุปกรณ์ที่เชื่อถือได้ที่มีอยู่ใช้ข้าม MFA ได้ แต่จะไม่ลบข้อมูลบันทึก หากเปิดใช้งานอีกครั้ง ข้อมูลที่ยังไม่หมดอายุหรือยังไม่ถูกลบจะกลับมาใช้งานได้

ข้อจำกัดระดับองค์กร​

องค์กรสามารถอนุญาตหรือไม่อนุญาตให้อุปกรณ์ที่เชื่อถือได้ใช้กับสมาชิกของตนได้ การตั้งค่านี้จะเข้มงวดกว่านโยบายระดับ tenant เท่านั้น:

  • องค์กรไม่สามารถเปิดใช้งานอุปกรณ์ที่เชื่อถือได้หากนโยบายโกลบอลถูกปิดอยู่
  • หากองค์กรใดที่ผู้ใช้สังกัดอยู่ไม่อนุญาตให้อุปกรณ์ที่เชื่อถือได้ใช้งาน ข้อมูลรับรองอุปกรณ์ที่เชื่อถือได้ของผู้ใช้จะไม่สามารถข้าม MFA ได้ ไม่ว่าองค์กรนั้นจะต้องการ MFA หรือไม่ก็ตาม
  • องค์กรไม่มีระยะเวลา trust แยกต่างหาก จะใช้ระยะเวลาโกลบอล

การไม่อนุญาตให้อุปกรณ์ที่เชื่อถือได้ใช้ในองค์กรจะระงับการใช้งานสำหรับสมาชิกที่ได้รับผลกระทบ แต่จะไม่ลบข้อมูลบันทึก และไม่ป้องกันผู้ใช้หรือผู้ดูแลระบบจากการแสดงรายการหรือลบอุปกรณ์เหล่านั้น

การใช้อุปกรณ์ที่เชื่อถือได้ซ้ำต้องอาศัยบริบทของเบราว์เซอร์ที่เก็บและส่งคืนคุกกี้ first-party แบบถาวรสำหรับ endpoint ของ Logto เดียวกัน ซึ่งหมายถึงโปรไฟล์เบราว์เซอร์ ไม่ใช่อุปกรณ์จริง

WebView, เบราว์เซอร์ระบบ, custom tab, โหมดความเป็นส่วนตัว, เบราว์เซอร์ที่ปิดคุกกี้ และบริบทชั่วคราวอื่น ๆ สามารถใช้อุปกรณ์ที่เชื่อถือได้ก็ต่อเมื่อ cookie store ของพวกเขาเก็บข้อมูลรับรองไว้ หากคุกกี้ไม่พร้อมใช้งานในการลงชื่อเข้าใช้ครั้งถัดไป Logto จะดำเนินการ MFA แบบปกติต่อไปแทนที่จะล้มเหลวในการยืนยันตัวตน เบราว์เซอร์ โปรไฟล์เบราว์เซอร์ โดเมน Logto tenant และผู้ใช้ที่ต่างกันจะไม่แชร์ข้อมูลรับรองอุปกรณ์ที่เชื่อถือได้

บันทึก:

Logto ไม่ใช้ browser fingerprinting หรือพยายามตรวจสอบล่วงหน้าว่าไคลเอนต์จะเก็บคุกกี้หรือไม่ แอปเนทีฟและกระบวนการลงชื่อเข้าใช้แบบ custom ควรถือว่าการสร้างอุปกรณ์ที่เชื่อถือได้เป็นแบบ best effort และควรมีขั้นตอน MFA แบบปกติไว้เสมอ

จัดการอุปกรณ์ที่เชื่อถือได้​

จะแสดงเฉพาะข้อมูลบันทึกที่ยังใช้งานอยู่และ expiresAt อยู่ในอนาคต ชื่ออุปกรณ์จะได้มาจาก user agent ล่าสุด ขณะที่ประเทศและเมืองเป็นข้อมูลประมาณจากบริบทคำขอล่าสุด จะไม่มีการแสดงหรือส่งคืน IP address ดิบผ่าน API สาธารณะ

การจัดการโดยผู้ดูแลระบบ​

ใน Console > User management เปิดผู้ใช้เพื่อดูและลบอุปกรณ์ที่เชื่อถือได้ของพวกเขา การลบอุปกรณ์ที่เชื่อถือได้จะมีผลกับการลงชื่อเข้าใช้ในอนาคตเท่านั้น ไม่ได้ยุติ session ที่กำลังใช้งานของผู้ใช้

คุณยังสามารถใช้ Management API ได้ดังนี้:

  • GET /api/users/{userId}/trusted-devices แสดงรายการอุปกรณ์ที่เชื่อถือได้ที่ยังใช้งานอยู่ทั้งหมดของผู้ใช้
  • DELETE /api/users/{userId}/trusted-devices/{trustedDeviceId} ลบอุปกรณ์ที่เชื่อถือได้หนึ่งรายการที่เป็นของผู้ใช้

ผลลัพธ์รายการจะมี id, userAgent, country, city, createdAt, lastUsedAt และ expiresAt

curl https://[tenant-id].logto.app/api/users/[user-id]/trusted-devices \
-H "Authorization: Bearer [management-api-access-token]"

curl -X DELETE \
https://[tenant-id].logto.app/api/users/[user-id]/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [management-api-access-token]"

เรียนรู้วิธี การยืนยันตัวตนกับ Management API

การจัดการด้วยตนเองผ่าน Account Center​

ใน Console > Sign-in & account > Account center กำหนดค่า อุปกรณ์ที่เชื่อถือได้ (Trusted devices):

  • ปิด (Off): ผู้ใช้ไม่สามารถแสดงรายการหรือลบอุปกรณ์ที่เชื่อถือได้
  • อ่านอย่างเดียว (Read-only): ผู้ใช้สามารถแสดงรายการอุปกรณ์ที่เชื่อถือได้แต่ไม่สามารถลบได้
  • แก้ไข (Edit): ผู้ใช้สามารถแสดงรายการและลบอุปกรณ์ที่เชื่อถือได้

Account Center ที่สร้างไว้ล่วงหน้าจะแสดงอุปกรณ์ที่เชื่อถือได้ที่ยังใช้งานอยู่ในหน้าความปลอดภัย และจะระบุเบราว์เซอร์ปัจจุบันเมื่อข้อมูลรับรองคุกกี้สมบูรณ์ การลบเบราว์เซอร์ปัจจุบันจะลบคุกกี้อุปกรณ์ที่เชื่อถือได้แต่ session การเข้าสู่ระบบปัจจุบันยังคงอยู่ การลบข้อมูลบันทึกของเบราว์เซอร์อื่นจะไม่สามารถลบคุกกี้ของเบราว์เซอร์นั้นได้ทันที คุกกี้ที่หมดอายุจะถูกปฏิเสธและลบเมื่อถูกส่งมาในครั้งถัดไป

สำหรับ Account Center แบบ custom ให้ขอ scope urn:logto:scope:trusted_devices และเรียก Account API ด้วย access token urn:logto:acr:1fa ล่าสุด (ดู OIDC step-up authentication):

  • GET /api/my-account/trusted-devices แสดงรายการอุปกรณ์ที่เชื่อถือได้ที่ยังใช้งานอยู่ของผู้ใช้ที่ลงชื่อเข้าใช้ และเพิ่ม isCurrent ในแต่ละรายการ
  • DELETE /api/my-account/trusted-devices/{trustedDeviceId} ลบอุปกรณ์ที่เชื่อถือได้หนึ่งรายการที่เป็นของผู้ใช้ที่ลงชื่อเข้าใช้ การลบนี้ใช้ได้เฉพาะกับแอป first-party
curl https://[tenant-id].logto.app/api/my-account/trusted-devices \
-H "Authorization: Bearer [account-api-access-token]"

curl -X DELETE \
https://[tenant-id].logto.app/api/my-account/trusted-devices/[trusted-device-id] \
-H "Authorization: Bearer [account-api-access-token]"

ดู Account API reference และ Step-up authentication สำหรับ flow การอนุญาต

โมเดลความปลอดภัย​

ข้อมูลรับรองอุปกรณ์ที่เชื่อถือได้เป็น bearer credential แบบทึบ (opaque) ที่มีสองส่วน: record ID และ secret แบบสุ่มขนาด 32 ไบต์ที่เข้ารหัส

  • ใน production Logto จะเก็บไว้ในคุกกี้ host-only ที่มี prefix __Host- พร้อม HttpOnly, Secure, SameSite=Lax และ Path=/ JavaScript ของแอปไม่สามารถอ่านได้
  • เซิร์ฟเวอร์จะเก็บเฉพาะ SHA-256 hash ของ secret และเปรียบเทียบข้อมูลรับรองด้วยการตรวจสอบแบบ timing-safe
  • ทุกการค้นหาข้อมูลรับรองจะถูกจำกัดที่ tenant และผู้ใช้ และต้องการ expiresAt ที่ยังไม่หมดอายุ
  • เวลาหมดอายุถูกกำหนดตายตัวตั้งแต่สร้าง การล้างข้อมูลที่หมดอายุจะเกิดขึ้นในภายหลัง แต่เวลาในการล้างไม่ถูกใช้เป็นกลไกความปลอดภัย
  • การลบโดยตรงจะลบข้อมูลบันทึกฝั่งเซิร์ฟเวอร์ทันที คุกกี้ที่ถูกคัดลอกหรือหมดอายุจะไม่ผ่านการตรวจสอบหลังจากข้อมูลบันทึกถูกลบ

secret และ hash ของข้อมูลรับรองจะไม่ถูกเปิดเผยผ่าน UI, API สาธารณะ, audit log หรือ webhook ID อุปกรณ์สาธารณะไม่ใช่ตัวระบุอุปกรณ์จริงและไม่เพียงพอสำหรับการยืนยันตัวตน เนื่องจากคุกกี้เป็น bearer credential การคัดลอกคุกกี้สมบูรณ์สามารถนำไปใช้ซ้ำกับ tenant และผู้ใช้เดียวกันจนกว่าข้อมูลบันทึกจะหมดอายุหรือถูกลบ อุปกรณ์ที่เชื่อถือได้ไม่ได้ให้การรับรองอุปกรณ์ที่มีฮาร์ดแวร์รองรับ

Audit log และ webhook​

Audit log เฉพาะสำหรับอุปกรณ์ที่เชื่อถือได้ประกอบด้วย:

  • TrustedDevice.Created: มีการสร้างข้อมูลบันทึกอุปกรณ์ที่เชื่อถือได้และคุกกี้ข้อมูลรับรองหลังจากการโต้ตอบสำเร็จ
  • TrustedDevice.Used: ข้อมูลรับรองอุปกรณ์ที่เชื่อถือได้ถูกใช้ข้าม MFA และการลงชื่อเข้าใช้สำเร็จ

คุณสามารถสมัครรับ webhook สำหรับการเปลี่ยนแปลงข้อมูลเหล่านี้:

  • TrustedDevice.Created: มีการสร้างข้อมูลบันทึกอุปกรณ์ที่เชื่อถือได้
  • TrustedDevice.Deleted: ผู้ใช้หรือผู้ดูแลระบบลบข้อมูลบันทึกอุปกรณ์ที่เชื่อถือได้

ข้อมูลเหตุการณ์จะมี id, userId และ expiresAt ของอุปกรณ์ที่เชื่อถือได้ ไม่รวมข้อมูลรับรองคุกกี้, secret hash และ IP ของคำขอ ไม่มี webhook สำหรับการใช้งานสำเร็จเพื่อหลีกเลี่ยงปริมาณเหตุการณ์สูง และการเปลี่ยนนโยบายจะไม่สร้างเหตุการณ์ lifecycle ของอุปกรณ์ที่เชื่อถือได้เพราะไม่ได้เปลี่ยนแปลงข้อมูลบันทึก

การหมดอายุโดยธรรมชาติจะไม่มี webhook TrustedDevice.Expired การหมดอายุเกิดขึ้นเมื่อเวลาผ่านไป ไม่ใช่เมื่อมีการเปลี่ยนแปลงข้อมูล และการล้างข้อมูลจริงอาจเกิดขึ้นในภายหลัง ใช้ค่า expiresAt จาก TrustedDevice.Created หาก integration ของคุณต้องการคำนวณเวลาหมดอายุที่คาดไว้

การหมดอายุโดยธรรมชาติก็จะไม่สร้าง audit log เฉพาะสำหรับอุปกรณ์ที่เชื่อถือได้เช่นกัน

ดู ประเภทเหตุการณ์ audit log และ เหตุการณ์ webhook สำหรับรายการเหตุการณ์

หมายเหตุเกี่ยวกับวงจรชีวิต​

  • การออกจากระบบตามปกติจะไม่ลบอุปกรณ์ที่เชื่อถือได้
  • การเพิ่ม ลบ หรือรีเซ็ตปัจจัย MFA จะไม่ลบอุปกรณ์ที่เชื่อถือได้
  • การลบอุปกรณ์ที่เชื่อถือได้จะไม่ยุติ session ที่กำลังใช้งาน
  • การลบผู้ใช้จะลบข้อมูลบันทึกอุปกรณ์ที่เชื่อถือได้ของเขาผ่านวงจรชีวิตข้อมูลผู้ใช้
  • ไม่มีขีดจำกัดจำนวนอุปกรณ์ที่เชื่อถือได้หรือการลบอัตโนมัติ