• release
  • API SDK
  • Vault
  • account API

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

🎉 ขอแนะนำเวอร์ชันประจำเดือนกรกฎาคม: Logto API SDK, ตู้นิรภัยสำหรับการจัดเก็บโทเค็นแบบ Federated, จัดการ TOTP และรหัสสำรองผ่าน Account API และอีกมากมาย!

Simeng
Simeng
Developer

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

Logto API SDK

TypeScript SDK สำหรับใช้งานร่วมกับ Management API ของ Logto โดยใช้การยืนยันตัวตนแบบ client credentials

วิธีการทำงาน:

  1. สร้างแอปพลิเคชัน machine-to-machine ใน Logto Console
  2. ให้แอปนี้เข้าถึง Management API
  3. ติดตั้ง SDK ผ่าน npm: npm install @logto/api
  4. ใช้ createManagementApi() เพื่อสร้าง Management API client ที่มี type สำหรับแอปของคุณด้วย credentials

จุดเด่น:

  • จัดการการยืนยันตัวตนและต่ออายุ OAuth token ให้อัตโนมัติ
  • รองรับทั้ง Logto Cloud และโฮสต์เอง
  • ช่วยให้เชื่อมต่อกับ Logto's Management API ได้ง่ายขึ้น ปล่อยให้คุณโฟกัสกับการสร้างฟีเจอร์ แทนที่จะต้องมาจัดการกับคำร้องขอ low-level API

ตู้นิรภัยข้อมูลลับ (Secret vault)

Secret vault คือโซลูชันการจัดเก็บข้อมูลอย่างปลอดภัยใน Logto สำหรับจัดการข้อมูลผู้ใช้ที่ละเอียดอ่อน เช่น access token, API key, รหัสผ่าน และข้อมูลลับอื่นๆ โดยปกติแล้ว ข้อมูลลับเหล่านี้จะใช้เพื่อเข้าถึงบริการบุคคลที่สามแทนผู้ใช้ ดังนั้นการจัดเก็บอย่างปลอดภัยจึงจำเป็น

รองรับการจัดเก็บ Token แบบ Federated

ขณะนี้รองรับการจัดเก็บ token สำหรับทั้งคอนเนคเตอร์ SSO แบบโซเชียลและองค์กร เมื่อเปิดใช้งาน Logto จะเก็บ token set ที่ออกโดย identity provider หลังจากการยืนยันตัวตนที่สำเร็จ แอปพลิเคชันสามารถดึง access token นี้ได้ในภายหลัง โดยไม่ต้องให้ผู้ใช้ยืนยันตัวตนอีกครั้ง เพื่อนำไปเรียก API ของบุคคลที่สาม

คอนเนคเตอร์ที่รองรับ:

  • คอนเนคเตอร์โซเชียล: GitHub, Google, Facebook, Standard OAuth 2.0, และ Standard OIDC
  • คอนเนคเตอร์ SSO องค์กร: คอนเนคเตอร์ SSO ทุกตัวที่ใช้ OIDC

วิธีการทำงาน:

  1. เปิดใช้งานการจัดเก็บ token สำหรับคอนเนคเตอร์ SSO โซเชียลและองค์กรใน Logto Console หรือผ่าน Logto Management API
  2. เมื่อเปิดใช้งานแล้ว Logto จะเก็บ token set ที่ออกโดย provider ให้โดยอัตโนมัติหลังผู้ใช้ยืนยันตัวตนสำเร็จ
  3. ดึง token ที่จัดเก็บไว้ผ่าน Account API ตามต้องการ

สำหรับข้อมูลรายละเอียดเพิ่มเติม ดูที่ เอกสารการใช้งาน Secret vault

เพิ่ม TOTP และรหัสสำรองผ่าน Account API

ตอนนี้ผู้ใช้สามารถเพิ่ม TOTP และรหัสสำรองผ่าน Account API ได้แล้ว

  • POST /api/my-account/mfa-verifications/totp-secret/generate: สร้าง TOTP secret
  • POST /api/my-account/mfa-verifications/backup-codes/generate: สร้างรหัสสำรอง
  • POST /api/my-account/mfa-verifications: เพิ่ม TOTP หรือรหัสสำรองโดยใช้ secret หรือโค้ดที่สร้างขึ้น
  • GET /api/my-account/mfa-verifications/backup-codes: ดึงรหัสสำรอง

การปรับปรุงอื่น ๆ

  • คอนเนคเตอร์โซเชียล: เพิ่มตัวเลือกให้ระบุพารามิเตอร์ scope ที่กำหนดเองตอนสร้าง authorization URL สำหรับคอนเนคเตอร์โซเชียล ทำให้สามารถร้องขอสิทธิ์เพิ่มเติมจากผู้ให้บริการโซเชียลขณะเรียก social verification endpoint ของ Logto ได้ หากมีการระบุ scope จะใช้ค่า scope นั้นในการขออนุญาต มิฉะนั้นจะใช้ scope ค่าเริ่มต้นที่ตั้งไว้ในการตั้งค่าคอนเนคเตอร์
  • Console: เพื่อรองรับคุณสมบัติ Secret vault ได้ดียิ่งขึ้น เราได้ปรับโครงร่างหน้ารายละเอียดผู้ใช้ใหม่ โดยจะจัดกลุ่มข้อมูลโซเชียลและ SSO ขององค์กรของผู้ใช้ไว้ในส่วน Connection ใหม่ ซึ่งจะลิสต์การเชื่อมต่อของผู้ใช้ทุกอันพร้อมข้อมูลตัวตนของบุคคลที่สามและสถานะการจัดเก็บ token (ถ้ามี) นอกจากนี้ยังมีหน้ารายละเอียดตัวตนของผู้ใช้แต่ละการเชื่อมต่อ เพื่อแสดงข้อมูลเพิ่มเติมและโทเค็นที่เกี่ยวข้อง

การแก้ไขข้อบกพร่อง

เงื่อนไข Foreign key แบบ tenant-aware สำหรับตาราง organization_user_relations

ปัญหา

นักพัฒนาอาจเผลอกำหนด user_id จาก tenant อื่นให้กับองค์กร ทำให้ endpoints ที่เกี่ยวกับผู้ใช้องค์กรเกิดข้อผิดพลาด 500 เดิมที ตาราง organization_user_relations มี foreign key constraint แค่ที่ users (id) จึงสามารถเพิ่ม user ID ใดก็ได้ที่มีอยู่ โดยไม่ขึ้นกับการแยก tenant

สาเหตุหลัก

Logto ใช้ Row Level Security (RLS) กับทุกตารางเพื่อแยกการเข้าถึงข้อมูลตาม tenant เมื่อ join ตาราง users กับ organization_user_relations ข้อมูลจริงของผู้ใช้จะไม่สามารถเข้าถึงได้สำหรับ tenant ปัจจุบันเนื่องจากข้อจำกัด RLS ทำให้ข้อมูลผู้ใช้ตอบกลับเป็น Null และเกิด server error 500

วิธีแก้ไข

ได้เพิ่ม foreign key แบบ composite (tenant_id, user_id) อ้างอิงไปที่ users (tenant_id, id) เพื่อให้ tenant_id ของความสัมพันธ์องค์กร-ผู้ใช้ตรงกับ tenant_id ของผู้ใช้ ซึ่งช่วยบังคับการแยก tenant ที่ถูกต้องในระดับฐานข้อมูล