• release

อัปเดตผลิตภัณฑ์ Logto

Logto v1.40.0 มาพร้อมตัวเลือกช่วงเวลา (time-range picker) สำหรับบันทึกการตรวจสอบ (audit logs), รายละเอียด payload ใน webhook ของสมาชิกองค์กรที่สมบูรณ์ยิ่งขึ้น, ประสิทธิภาพดีขึ้นสำหรับองค์กรขนาดใหญ่ และการปรับปรุงคุณภาพชีวิตในงาน self-host สำหรับผู้ใช้งานเองอีกหลายรายการ

Yijun
Yijun
Developer

หยุดเสียเวลาเป็นสัปดาห์กับการยืนยันตัวตนผู้ใช้
เปิดตัวแอปที่ปลอดภัยเร็วขึ้นด้วย Logto ผสานการยืนยันตัวตนผู้ใช้ภายในไม่กี่นาทีและมุ่งเน้นที่ผลิตภัณฑ์หลักของคุณ
เริ่มต้นใช้งาน
Product screenshot

Logto v1.40.0 เป็นเวอร์ชันที่มุ่งเน้นการเสริมความแข็งแกร่งให้แพลตฟอร์ม โดยทำให้การใช้งานบันทึกการตรวจสอบ (audit logs) ใช้งานได้จริงในระบบขนาดใหญ่, แจ้งรายละเอียดการเปลี่ยนแปลงใน webhook ของสมาชิกองค์กรได้อย่างแม่นยำ, เพิ่มความรวดเร็วในคำค้นองค์กรสำหรับองค์กรขนาดใหญ่ และลดปัญหาความขัดข้องที่มีมายาวนานสำหรับงาน self-hosted deployment พร้อมกับการเพิ่ม connector ใหม่อีก 3 รายการ นี่คือสิ่งใหม่ที่เพิ่มเข้ามา

บันทึกตรวจสอบที่คุณกำหนดขอบเขตได้จริง

บันทึกตรวจสอบ (audit logs) จะมีประโยชน์สูงสุดเมื่อบางอย่างเพิ่งเกิดขึ้น — แต่ก่อนหน้านี้ Console ดึงข้อมูลในขอบเขตที่ไม่มีการจำกัด ทำให้ช้าเมื่อ tenant มีปริมาณ log จำนวนมาก

เวอร์ชันนี้เพิ่ม ตัวเลือกช่วงเวลา (time-range picker) ที่หน้าบันทึกตรวจสอบ โดยตั้งค่าเริ่มต้นเป็น 7 วันล่าสุด คุณจะมีตัวเลือกช่วงเวลาที่กำหนดไว้ (ชั่วโมงล่าสุด 1 ชั่วโมง, 24 ชั่วโมงที่ผ่านมา, 7 วันที่ผ่านมา, 30 วันที่ผ่านมา) และสามารถเลือกช่วงวันเองได้ อีกทั้งยังเข้าถึง log เก่าได้ง่ายเพียงขยายช่วงเวลา (#8810)

ในส่วนของ backend, Management API มี query parameter start_time และ end_time สำหรับ GET /api/logs และ GET /api/hooks/{id}/recent-logs (ขอบเขต exclusive บน unix milliseconds) ให้คุณเลือกช่วงเวลา log programmatically ได้เช่นกัน (#8806) สำหรับ tenant ขนาดใหญ่มาก parameter ใหม่ enableCap=true จะตัดการนับแถวที่ ~10,000 rows แล้วตอบกลับ header Total-Number-Is-Capped: true เพื่อแลกกับความเร็วโดยไม่ทำให้เกิด statement_timeout; และ Console จะเปลี่ยนหน้าไปใช้ Prev/Next layout เมื่อถึงขีดจำกัด (#8796, #8802) พฤติกรรมเริ่มต้นจะยังเหมือนเดิมหากไม่ใส่ parameter

Webhook สมาชิกองค์กรแจ้งรายละเอียดได้มากขึ้น

Webhook Organization.Membership.Updated แต่เดิมจะแจ้งให้ทราบว่า มี การเปลี่ยนสมาชิก แต่ไม่แจ้งว่า อะไร ที่เปลี่ยน ตอนนี้เพิ่ม field delta โดยตรง — addedUserIds / removedUserIds และ addedApplicationIds / removedApplicationIds ในแต่ละ endpoint ของสมาชิก และเพิ่ม addedUserIds สำหรับการรับคำเชิญและการ provisioning ทันที (email-domain และ enterprise SSO JIT) (#8840)

การเปลี่ยนแปลงนี้เพิ่มเข้าไปและไม่กระทบกับเวอร์ชันเก่า: array ที่ว่างจะไม่แสดง และ array จะจำกัดไว้สูงสุด 5,000 entries ในการดำเนินการแบบ bulk (กรณีเกินนั้นให้ sync ผ่าน GET /organizations/:id/users หรือ .../applications) ดูรายละเอียดสัญญาได้ใน webhook reference สำหรับสัญญาเต็ม การเปลี่ยนแปลงนี้ได้แรงบันดาลใจจากข้อเสนอโดยชุมชน — ขอเครดิตให้ @chiche84 (#8752)

ในขณะที่เราปรับปรุงโค้ด sessions, GET /api/my-account/sessions ก็เพิ่ม flag isCurrent ให้แต่ละรายการแล้ว เพื่อให้ UI จัดการ session สามารถระบุแถว "อุปกรณ์นี้" ได้ชัดเจนและหลีกเลี่ยงการปิด session ตัวเองแบบไม่ได้ตั้งใจ (#8731).

องค์กรขนาดใหญ่ก็ยังคงเร็ว

หลายการเปลี่ยนแปลงครั้งนี้เน้น tenant ที่มีองค์กรขนาดใหญ่มาก ๆ:

  • GET /organizations/:id/users รวบรวม role ผ่าน subquery แบบ LATERAL ทำให้ LIMIT คัดกรอง user ได้ ก่อน lookup role — ไม่ต้อง join ทุกสมาชิกกับ role เต็มตลอดทุก paginated request (#8826)
  • เพิ่ม secondary index ใหม่ 2 ตัวเพื่อเร่ง reverse lookup: ตัวหนึ่งที่ organization_user_relations (tenant_id, user_id) ซึ่งใช้งานบ่อยในทุกการ sign-in และ middleware ของสมาชิก (#8818), อีกตัวที่ organization_role_user_relations (tenant_id, organization_id, user_id) ซึ่งใช้งานใน getUserScopes และ join ข้อมูล role ตาม user (#8819)
  • PUT /organizations/:id/users เปลี่ยนมาใช้ query ที่อิง delta แบบใหม่ เขียนเฉพาะแถวที่เปลี่ยนแปลงจริงแทนการ rewrite ทุกแถวในทุกครั้ง และยังคง role ให้สมาชิกที่อยู่เหมือนเดิม (#8820)

Account Center และ ปรับปรุงประสบการณ์การลงชื่อเข้าใช้

  • ข้อตกลงเงื่อนไขในการสมัครบัญชี. เมื่อ policy ข้อตกลงกำหนดให้ยืนยันเงื่อนไขตอนสมัครบัญชีเท่านั้น หากลงชื่อเข้าสู่ระบบด้วยอีเมลหรือโทรศัพท์ที่ยังไม่ลงทะเบียน แล้วเลือก "สร้างบัญชีใหม่" ระบบจะถามยืนยันข้อตกลงก่อนสร้างบัญชี — ให้ประสบการณ์เหมือนกับการสมัครและการลงชื่อด้วย social/SSO (#8835)
  • การตั้งรหัสผ่านครั้งแรก. ผู้ใช้ที่ยังไม่มีรหัสผ่าน, อีเมล หรือโทรศัพท์ สามารถตั้งรหัสผ่านแรกผ่าน Account API ได้โดยไม่ต้องมี verification record (#8746)
  • Re-authentication แบบเงียบ. เมื่อเกิด error user-info — เช่น token หมดอายุหลังสลับบัญชีในเบราว์เซอร์เดียวกัน — Account Center จะ re-authenticate ด้วย prompt=none แทนที่จะเด้งไปหน้า login ขอบคุณ @taka-guevara (#8785)
  • หมดอายุ session และ callback social ที่ดีขึ้น. Session ที่หมดอายุใน Account Center จะ redirect โดยไม่แสดงข้อผิดพลาด sign-in แบบ manual (#8830), callback social linking อ่าน connectorId ได้ถูกต้องแล้ว (#8758), และป้าย toggle การเปิด/ปิด 2-step verification ชัดเจนกว่าเดิม (#8792)
  • i18n. แก้ไขคำแปลภาษาอังกฤษของ "Passkey" ใน MFA ให้ถูกต้อง ขอบคุณ @rotempasharel1 (#8870)

Connector ใหม่และที่ได้รับการปรับปรุง

อัปเดตนี้เพิ่ม connector ใหม่สามตัวและปรับปรุงอีกหลายตัว — หลายอันมาจากชุมชน:

  • MailJunky connector สำหรับอีเมล auth แบบ business, ส่งโดย @devadarshh (#8638)
  • SMSBao SMS connector สำหรับยืนยันตัวตนในประเทศ, ส่งโดย @wintbiit (#8871)
  • Aliyun SMS authentication service connector, ส่งโดย @CertStone (#8385)
  • Aliyun Direct Mail ปัจจุบันรองรับการตั้งค่า region โดยตรง (#8892)
  • WeCom ดึงรายละเอียด profile ผู้ใช้ได้สมบูรณ์มากขึ้นผ่าน API เพิ่มเติม, โดย @liyujun-dev (#8191)
  • SMTP ส่วน auth สามารถละ user และ pass ได้ ดังนั้น relay ที่ authorize จากต้นทาง (เช่น IP/VLAN) จะทำงานได้โดยไม่ต้องสร้าง credential ปลอม (#8888)
  • Connector Kit ตรวจสอบ email branding URL ให้เข้มงวดขึ้น ลด false positive กับตัวย่อมีจุด ขอบคุณ @aayushbaluni (#8747)

สำหรับผู้ใช้ self-hosted

มีการปรับปรุงเพื่อ smooth OSS deployment:

Air-gapped admin setup. คำสั่ง install และ db seed ตอนนี้รับ flag --dapc (alias --disable-admin-pwned-password-check). นโยบายรหัสผ่านของ tenant admin จะเปิด breach check จาก Have I Been Pwned โดยอัตโนมัติ ทำให้เรียก api.pwnedpasswords.com ทุกครั้งที่ส่งรหัสผ่าน admin — ถ้า endpoint นี้ใช้ไม่ได้ การสมัคร admin คนแรกจะถูก block การเพิ่ม --dapc จะปิด breach check ตาม seed policy ทำให้สมัคร admin ได้แม้ไม่มี network ออกภายนอก ขอบคุณ @darcyYe, #8859

Admin signing keys จากฐานข้อมูล. OSS deployment ตอนนี้อ่าน signing keys ตรงจาก database เลย ไม่ต้องตั้ง host/DNS mapping พิเศษเพื่อให้ Logto container ดึง OIDC config จาก endpoint ภายนอกอย่างเมื่อก่อน (#8869)

Migration จำเป็น. v1.40.0 มีการเปลี่ยน schema database (index ความสัมพันธ์องค์กรและ column ภายในใหม่) หลังจาก pull เวอร์ชันนี้ ให้รันขั้นตอน alteration database ก่อน start server ดู คู่มืออัปเกรด

เริ่มต้นใช้งานได้เลย

พร้อมอัปเกรดหรือยัง? ดู คู่มืออัปเกรด สำหรับคำแนะนำแบบ step-by-step

ดูรายการเปลี่ยนแปลงทั้งหมดได้ที่ หน้าปล่อย GitHub release

มีคำถามหรือคำติชม? เข้าร่วมใน Discord หรือเปิด issue ใน GitHub ได้เลย