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

