Logto 產品更新
🎉 介紹我們 7 月的發佈內容:Logto API SDK,聯邦憑證儲存用的秘密保管庫,透過帳戶 API 管理 TOTP 和備用代碼,還有更多!
Logto API SDK
一個用於與 Logto 管理 API 互動的 TypeScript SDK,採用 client credentials 驗證。
運作方式:
- 在 Logto Console 建立一個機器對機器應用程式。
- 授予該應用程式存取管理 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 Console 或透過 Logto 管理 API 為社群和企業 SSO 連接器啟用憑證儲存功能。
- 啟用後,Logto 會在使用者驗證成功後自動儲存提供者核發的憑證組。
- 需要時可透過 Account 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
:取得備用代碼。
其他改進
- 社群連接器:新增在產生社群連接器授權 URL 時提供自訂
scope
參數的功能。這讓你能在呼叫 Logto 社群驗證端點 時,向社群服務商請求額外權限。若有提供 scope,授權請求會採用它;否則使用連接器設定裡的預設 scope。 - Console:為了更好支援新推出的秘密保管庫功能,我們重構了用戶詳細頁的版面。使用者的社群與企業 SSO 身份現已整合至新的連接 (Connection) 區塊。這個區塊會列出使用者連結的所有身份來源,顯示第三方身份資訊與憑證儲存狀態(如適用)。每個連接都可進入詳細頁,檢視更完整的身份與相關憑證資訊。
錯誤修復
organization_user_relations
資料表上的 tenant 感知型外鍵約束
問題
開發者可能會誤將來自另一租戶的 user_id
指派給組織,導致組織用戶 API 端點出現 500 錯誤。原始 organization_user_relations
資料表僅在 users (id)
上有外鍵約束,導致任何現有用戶 ID 都可被指派,未區分租戶。
根本原因
Logto 針對各資料表都啟用 Row Level Security(RLS),確保租戶資料存取隔離。當與 organization_user_relations
進行 users 資料表 join 時,受 RLS 限制,實際用戶資料會對當前租戶不可存取,導致用戶資料為 null,進而觸發 500 伺服器錯誤。
解決方案
新增了複合外鍵約束 (tenant_id, user_id)
並參照 users (tenant_id, id)
,確保組織—用戶關聯的租戶 ID 與用戶的租戶 ID 相符。這樣一來就能在資料庫層級正確落實租戶隔離。