Logto 產品更新
🎉 介紹我們七月的新版本:Logto API SDK、 聯邦令牌儲存的秘密保管庫、透過帳戶 API 管理 TOTP 和備用代碼,還有更多精彩內容!
Logto API SDK
一個用於與 Logto 管理 API 互動的 TypeScript SDK,支援客戶端憑證認證登入。
運作方式:
- 在 Logto 控制台建立一個機器對機器應用程式。
- 授權該應用程式訪問管理 API。
- 透過 npm 安裝 SDK:
npm install @logto/api
- 使用
createManagementApi()
,配合你的應用程式憑證創建一個型別化的管理 API 客戶端。
重點功能:
- 自動處理 OAuth 令牌認證與續期。
- 同時支援 Logto Cloud 和自我託管實例。
- 簡化與 Logto 管理 API 集成,讓你能專注於構建功能,而不是處理低階的 API 請求。
秘密保管庫
秘密保管庫是 Logto 中專為管理敏感用戶資料(包括存取令牌、API 金鑰、密碼和其他機密資訊) 而設計的安全儲存解決方案。這些秘密通常用於代表用戶存取第三方服務,因此安全儲存至關重要。
聯邦令牌儲存支援
現在,社交及企業 SSO 連接器均支援令牌儲存。當啟用後,Logto 會在用戶成功認證後,儲存由身份提供者簽發的令牌集合。應用程式稍後可提取存取令牌——無需用戶再次認證——以呼叫第三方 API。
支援的連接器:
- 社交連接器:GitHub、Google、Facebook、標準 OAuth 2.0 和 標準 OIDC
- 企業 SSO 連接器:所有基於 OIDC 的 SSO 連接器
運作方式:
- 在 Logto 控制台或透過管理 API,為社交及企業 SSO 連接器啟用令牌儲存功能。
- 啟用後,Logto 會於用戶成功認證後自動儲存身份提供者發放的令牌集合。
- 需要時,可通過帳戶 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 一致。這能於資料庫層面強制執行正確的租戶隔離。