繁體中文(台灣)
  • release
  • API SDK
  • Vault
  • account API

Logto 產品更新

🎉 介紹我們 7 月的發佈內容:Logto API SDK,聯邦憑證儲存用的秘密保管庫,透過帳戶 API 管理 TOTP 和備用代碼,還有更多!

Simeng
Simeng
Developer

不要在使用者認證上浪費數週時間
使用 Logto 更快地發布安全應用程式。幾分鐘內整合使用者認證,專注於您的核心產品。
立即開始
Product screenshot

Logto API SDK

一個用於與 Logto 管理 API 互動的 TypeScript SDK,採用 client credentials 驗證。

運作方式

  1. 在 Logto Console 建立一個機器對機器應用程式。
  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 Console 或透過 Logto 管理 API 為社群和企業 SSO 連接器啟用憑證儲存功能。
  2. 啟用後,Logto 會在使用者驗證成功後自動儲存提供者核發的憑證組。
  3. 需要時可透過 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 相符。這樣一來就能在資料庫層級正確落實租戶隔離。