繁體中文(香港)
  • 發佈
  • API SDK
  • 保管庫
  • 帳戶 API

Logto 產品更新

🎉 介紹我們七月的新版本:Logto API SDK、 聯邦令牌儲存的秘密保管庫、透過帳戶 API 管理 TOTP 和備用代碼,還有更多精彩內容!

Simeng
Simeng
Developer

Stop wasting weeks on user auth
Launch secure apps faster with Logto. Integrate user auth in minutes, and focus on your core product.
Get started
Product screenshot

Logto API SDK

一個用於與 Logto 管理 API 互動的 TypeScript SDK,支援客戶端憑證認證登入。

運作方式

  1. 在 Logto 控制台建立一個機器對機器應用程式。
  2. 授權該應用程式訪問管理 API。
  3. 透過 npm 安裝 SDK:npm install @logto/api
  4. 使用 createManagementApi(),配合你的應用程式憑證創建一個型別化的管理 API 客戶端。

重點功能

  • 自動處理 OAuth 令牌認證與續期。
  • 同時支援 Logto Cloud 和自我託管實例。
  • 簡化與 Logto 管理 API 集成,讓你能專注於構建功能,而不是處理低階的 API 請求。

秘密保管庫

秘密保管庫是 Logto 中專為管理敏感用戶資料(包括存取令牌、API 金鑰、密碼和其他機密資訊)而設計的安全儲存解決方案。這些秘密通常用於代表用戶存取第三方服務,因此安全儲存至關重要。

聯邦令牌儲存支援

現在,社交及企業 SSO 連接器均支援令牌儲存。當啟用後,Logto 會在用戶成功認證後,儲存由身份提供者簽發的令牌集合。應用程式稍後可提取存取令牌——無需用戶再次認證——以呼叫第三方 API。

支援的連接器:

  • 社交連接器:GitHubGoogleFacebook標準 OAuth 2.0標準 OIDC
  • 企業 SSO 連接器:所有基於 OIDC 的 SSO 連接器

運作方式:

  1. 在 Logto 控制台或透過管理 API,為社交及企業 SSO 連接器啟用令牌儲存功能。
  2. 啟用後,Logto 會於用戶成功認證後自動儲存身份提供者發放的令牌集合。
  3. 需要時,可通過帳戶 API 提取已儲存的令牌。

詳情請見秘密保管庫文件

透過帳戶 API 新增 TOTP 與備用代碼

用戶現可透過帳戶 API 新增 TOTP 及備用代碼。

  • POST /api/my-account/mfa-verifications/totp-secret/generate:產生 TOTP 秘密。
  • POST /api/my-account/mfa-verifications/backup-codes/generate:產生備用代碼。
  • POST /api/my-account/mfa-verifications:使用已產生的秘密或代碼,新增 TOTP 或備用代碼。
  • GET /api/my-account/mfa-verifications/backup-codes:查詢備用代碼。

其他改進

  • 社交連接器:新增支援在生成社交連接器的授權網址時提供自定義 scope 參數。這可使你在呼叫 Logto 社交驗證端點 時,向社交服務申請更多權限。若有提供 scope,授權請求將採用該 scope,否則使用連接器設置中預設的 scope。
  • 控制台:為支援全新秘密保管庫功能,已重構用戶詳情頁面版面。社交及企業 SSO 身份現整合於新「連接」區段,列出用戶所有已綁定連接,顯示第三方身份資訊及令牌儲存狀態(如果適用)。每個連接亦有專屬用戶身份詳情頁,列出更多綁定身份和相關令牌資訊。

錯誤修正

organization_user_relations 資料表的租戶感知外鍵限制

問題

開發者可能錯誤地將來自其他租戶的 user_id 指派到某組織,導致組織用戶 API 端點出現 500 錯誤。原本的 organization_user_relations 資料表只針對 users (id) 設有外鍵限制,容許指派所有已存在的 user ID,無論是否同屬一個租戶。

根本原因

Logto 於全部資料表套用行級安全(RLS)來隔離租戶的資料存取。當將用戶資料表與 organization_user_relations 連接查詢時,租戶受限下現行租戶無法存取實際用戶資料,導致回傳為 null,觸發 500 伺服器錯誤。

解決方案

新增複合外鍵 (tenant_id, user_id),參照 users (tenant_id, id),以確保組織-用戶對應的租戶 ID 與用戶的租戶 ID 一致。這能於資料庫層面強制執行正確的租戶隔離。