Logto v1.44.0 เพิ่มอุปกรณ์ที่เชื่อถือได้สำหรับ MFA, รหัสผู้ใช้แบบกำหนดเองสำหรับการย้ายระบบ, Cap เป็น CAPTCHA ให้โฮสต์เอง, และโทเค็นรีเฟรช สำหรับไคลเอนต์แอปพลิเคชันแบบไดนามิก นี่คือรายการใหม่ ๆ ที่เปลี่ยนไป
อุปกรณ์ที่เชื่อถือได้สำหรับ MFA#
ผู้ใช้ที่ยืนยัน MFA สำเร็จแล้วสามารถเชื่อถือเบราว์เซอร์ของตัวเองและข้ามขั้นตอน MFA ในเบราว์เซอร์นั้นได้จนกว่าความไว้วางใจจะหมดอายุ
เปิดใช้งานได้ที่ Console > Multi-factor authentication และกำหนดระยะเวลาความเชื่อถือ (1 - 365 วัน โดยค่าเริ่มต้น 30 วัน)
องค์กรสามารถห้ามสมาชิกเปิดใช้งานอุปกรณ์ที่เชื่อถือได้
ผู้ดูแลระบบจัดการอุปกรณ์ที่เชื่อถือได้ของผู้ใช้ผ่าน Console หรือ Management API ผู้ใช้จัดการของตัวเองผ่าน Account Center หรือ Account API
สมัครรับ webhook TrustedDevice.Created และ TrustedDevice.Deleted
อุปกรณ์ที่เชื่อถือได้จะครอบคลุมเฉพาะขั้นตอน MFA ในการลงชื่อเข้าใช้ การยืนยันตัวตนและการดำเนินการสำคัญอื่น ๆ ยังคงต้องแสดงหลักฐาน ดูคู่มือ อุปกรณ์ที่เชื่อถือได้ MFA
เก็บรหัสผู้ใช้เดิมไว้เมื่อต้องย้ายระบบ#
รหัสผู้ใช้ (user ID) ยาวได้สูงสุด 128 ตัวอักษร (เพิ่มจาก 12 หรือ 21 ตัวอักษรเดิม)
ใน Logto OSS, POST /api/users ยอมรับ id แบบกำหนดเอง เช่น auth0|abc123 จึงย้ายมาได้โดยไม่เปลี่ยน ดู เก็บรหัสผู้ใช้เดิม
GET /api/users สามารถค้นหาผู้ใช้จาก external identity ได้โดยใช้ identityType, identityProvider และ identityId ดู ค้นหาด้วย external identity
Cap, CAPTCHA โฮสต์เอง#
หาก Cloudflare Turnstile หรือ Google reCAPTCHA ถูกบล็อกหรือไม่เสถียรกับผู้ใช้ของคุณ ตอนนี้ใช้ Cap ได้แล้ว เป็น CAPTCHA แบบ proof-of-work โอเพนซอร์สที่คุณโฮสต์เอง ติดตั้ง Cap Standalone แล้วเพิ่มใน Console > Security > CAPTCHA
reCAPTCHA Enterprise สามารถกำหนดค่า threshold (คะแนน) ได้เอง (0.0 - 1.0) แทนค่าคงที่ 0.5
โทเค็นรีเฟรชสำหรับไคลเอนต์แอปแบบไดนามิก#
ไคลเอนต์ MCP เช่น ChatGPT และ Codex ขอ offline_access โดยไม่มี prompt=consent ซึ่งตาม OpenID Connect จะไม่ได้รับ refresh token ผู้ใช้จึงต้องลงชื่อเข้าใช้อีกครั้งเมื่อ access token หมดอายุ เปิด Add consent prompt for offline access ที่ Client compatibility ในการตั้งค่าแอปแบบไดนามิก แล้ว Logto จะเพิ่ม prompt ให้โดยอัตโนมัติ
สิ่งนี้ใช้ได้เฉพาะกับแอปพลิเคชันแบบไดนามิก (CIMD clients) การตั้งค่านี้เป็นแบบทดลองและปิดโดยค่าเริ่มต้น
การปรับปรุงและแก้ไขอื่น ๆ#
SAML applications สามารถใช้เซสชัน Logto ที่มีอยู่ได้: ปิด Always force authentication (ค่าเริ่มต้นยังคงบังคับยืนยันตัวตน) และรองรับการร้องขอ authentication ที่เซ็นชื่อ และ assertion รายงานเวลายืนยันตัวตนจริง
พารามิเตอร์การยืนยันตัวตน theme : ส่ง theme=light หรือ theme=dark เพื่อให้หน้าลงชื่อเข้าใช้ตรงกับธีมที่ระบุ แทนที่จะอิงกับค่าจาก OS ทั้ง flow ดู authentication parameters
SDK @logto/api เพิ่ม paginate() ซึ่งเป็น async iterator ที่มี type สำหรับ endpoint แบบแบ่งหน้า, พร้อม timeout การร้องขอ และการจัดการโทเค็นที่เสถียรมากขึ้น
หน้าลงชื่อเข้าใช้จะไม่ว่างเปล่าเมื่อเบราว์เซอร์ auto-translate แล้ว
Social sign-up จะมี "ลิงก์และดำเนินการต่อ" ก็ต่อเมื่อ identifier ที่ขัดแย้งกันสามารถยืนยันด้วยโค้ดยืนยันได้
OIDC issuer SSO แบบ enterprise ที่มี / ต่อท้ายจะแก้ไขได้ถูกต้องแล้ว
การกำหนดค่า OIDC จะไม่อนุญาต none prompt หากมีค่าร่วมกับ value อื่น
ข้อความ error ของ API จะ fallback เป็นภาษาหลักเสมอเมื่อไม่มีภาษาท้องถิ่นนั้น
ผลลัพธ์การทดสอบ webhook จะไม่แสดงในหน้าของ webhook อื่น
Apple connector: การตั้งค่า Service ID ชัดเจนมากขึ้นและง่ายต่อการแก้ไขปัญหา
DingTalk (web) connector: corpId จะถูกเก็บไว้ใน rawData แล้ว
Twilio SMS connector: สามารถระบุ custom API host ได้ (ไม่จำเป็น)
หมายเหตุสำหรับ Logto โฮสต์เอง#
ต้อง migration ฐานข้อมูล : รัน logto db alteration deploy (หรือ npm run alteration deploy ใน core image) ก่อนเริ่ม v1.44.0 รุ่นนี้ขยาย column user ID เป็น 128 ตัวอักษร และเพิ่ม column สำหรับ SAML configuration หากรหัสผู้ใช้เกินขีดจำกัดเดิม การ rollback จะล้มเหลว
Role ที่เหลือใน PostgreSQL : logto db seed ตอนนี้จะตรวจดู role เดิมที่หลงเหลืออยู่จากฐานข้อมูล Logto ก่อนสร้างตารางใหม่ และแจ้งเหตุผลว่าทำไมการลบ database ไม่ได้ลบ role เหล่านั้น (credit @ryanchou1994 )
ผู้มีส่วนร่วม#
ขอบคุณ community ที่ร่วมส่งงานในรุ่นนี้:
ขอบคุณ @imJack6 สำหรับการเสนอให้รองรับ Cap (#9404 )
เริ่มต้นใช้งาน#
พร้อมอัปเกรดแล้วใช่ไหม? อ่าน คู่มืออัปเกรด สำหรับขั้นตอนโดยละเอียด
ดูรายการการเปลี่ยนแปลงทั้งหมดได้ใน หน้าปล่อยเวอร์ชันบน GitHub
มีคำถามหรือข้อเสนอแนะ? มาเจอกันที่ Discord หรือแจ้งปัญหาที่ GitHub