透過 Management API 管理帳戶設定
整合方式
Logto 提供多種 Management API 來管理使用者帳戶。你可以利用這些 API 為終端使用者打造自助帳戶設定頁面。
架構說明
- 使用者 (User):已驗證且需要存取與管理帳戶設定的終端使用者。
- 用戶端應用程式 (Client application):提供帳戶設定頁面的應用程式。
- 伺服器端應用程式 (Server-side application):對用戶端提供帳戶設定 API,並與 Logto Management API 互動。
- Logto:作為驗證 (Authentication) 與授權 (Authorization) 服務,提供 Management API 以管理使用者帳戶。
時序圖
- 使用者存取用戶端應用程式。
- 用戶端應用程式向 Logto 發送驗證請求並將使用者導向 Logto 登入頁面。
- 使用者登入 Logto。
- 驗證後的使用者被導回用戶端應用程式,並帶有授權碼。
- 用戶端應用程式向 Logto 請求存取權杖 (Access token) 以存取自架帳戶設定 API。
- Logto 發放存取權杖 (Access token) 給用戶端應用程式。
- 用戶端應用程式攜帶使用者存取權杖 (Access token) 向伺服器端應用程式發送帳戶設定請求。
- 伺服器端應用程式驗證請求者身分與權限,並向 Logto 請求 Management API 存取權杖 (Access token)。
- Logto 發放 Management API 存取權杖 (Access token) 給伺服器端應用程式。
- 伺服器端應用程式使用 Management API 存取權杖 (Access token) 向 Logto 請求使用者資料。
- Logto 驗證伺服器身分與 Management API 權限後回傳使用者資料。
- 伺服器端應用程式根據請求者權限處理使用者資料並回傳帳戶詳細資料給用戶端應用程式。
將 Management API 整合至伺服器端應用程式
請參閱 Management API 章節,瞭解如何將 Management API 整合至伺服器端應用程式。
使用者管理 API
使用者資料結構
請參閱 使用者資料與自訂資料 章節,瞭解 Logto 中的使用者資料結構。
使用者個人資料與識別資訊管理 API
使用者的個人資料與識別資訊是使用者管理的核心。你可以使用下列 API 管理使用者個人資料與識別資訊。
| method | path | description |
|---|---|---|
| GET | /api/users/{userId} | 依 user ID 取得使用者詳細資料。 |
| PATCH | /api/users/{userId} | 更新使用者詳細資料。 |
| PATCH | /api/users/{userId}/profile | 依 user ID 更新使用者個人資料欄位。 |
| GET | /api/users/{userId}/custom-data | 依 user ID 取得使用者自訂資料。 |
| PATCH | /api/users/{userId}/custom-data | 依 user ID 更新使用者自訂資料。 |
| PATCH | /api/users/{userId}/is-suspended | 依 user ID 更新使用者停權狀態。 |
電子郵件與手機號碼驗證
在 Logto 系統中,電子郵件地址與手機號碼皆可作為使用者識別資訊,因此驗證這些資訊非常重要。為此,我們提供一組驗證碼 API,協助驗證所提供的電子郵件或手機號碼。
備註:
請務必在將新電子郵件或手機號碼更新至使用者個人資料前,先完成驗證。
| method | path | description |
|---|---|---|
| POST | /api/verifications/verification-code | 發送電子郵件或手機號碼驗證碼。 |
| POST | /api/verifications/verification-code/verify | 透過驗證碼驗證電子郵件或手機號碼。 |
使用者密碼管理
| method | path | description |
|---|---|---|
| POST | /api/users/{userId}/password/verify | 依 user ID 驗證目前使用者密碼。 |
| PATCH | /api/users/{userId}/password | 依 user ID 更新使用者密碼。 |
| GET | /api/users/{userId}/has-password | 依 user ID 檢查使用者是否設有密碼。 |
備註:
請務必在更新使用者密碼前,先驗證使用者目前密碼。
使用者社交身分管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId} | 依 user ID 取得使用者詳細資料。社交身分可於 identities 欄位中找到。 |
| POST | /api/users/{userId}/identities | 依 user ID 綁定已驗證的社交身分。 |
| DELETE | /api/users/{userId}/identities | 依 user ID 解除綁定社交身分。 |
| PUT | /api/users/{userId}/identities | 依 user ID 直接更新已綁定的社交身分。 |
| POST | /api/connectors/{connectorId}/authorization-uri | 取得社交身分提供者的授權 URI。使用此 URI 發起新的社交身分連結流程。 |
- 使用者存取用戶端應用程式並請求綁定社交身分。
- 用戶端應用程式向伺服器發送綁定社交身分請求。
- 伺服器向 Logto 請求取得社交身分提供者的授權 URI。你需在請求中提供自訂
state參數與redirect_uri,並確保已在社交身分提供者註冊該redirect_uri。 - Logto 回傳授權 URI 給伺服器。
- 伺服器將授權 URI 回傳給用戶端應用程式。
- 用戶端應用程式將使用者導向至 IdP 授權 URI。
- 使用者登入 IdP。
- IdP 以
redirect_uri及授權碼將使用者導回用戶端應用程式。 - 用戶端應用程式驗證
state並將 IdP 授權回應轉發給伺服器。 - 伺服器向 Logto 發送請求,將社交身分綁定至使用者。
- Logto 以授權碼向 IdP 取得使用者資訊。
- IdP 回傳使用者資訊給 Logto,Logto 完成社交身分綁定。
備註:
透過 Management API 綁定新社交身分時需注意以下限制:
- Management API 無任何 session 上下文,任何需主動 session 以安全維護社交驗證狀態的社交連接器皆無法透過 Management API 綁定。不支援的連接器包含 apple、標準 OIDC 及標準 OAuth 2.0 連接器。
- 同理,Logto 無法驗證授權回應中的
state參數。請務必在用戶端應用程式儲存state並於收到授權回應時驗證。 - 你需預先將
redirect_uri註冊至社交身分提供者。否則,社交 IdP 將無法將使用者導回你的用戶端應用程式。你的社交 IdP 必須允許多個 callbackredirect_uri,一個用於使用者登入,一個用於個人資料綁定頁面。
使用者企業身分管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}?includeSsoIdentities=true | 依 user ID 取得使用者詳細資料。企業身分可於 ssoIdentities 欄位中找到。於使用者詳細資料 API 加上 includeSsoIdentities=true 查詢參數即可取得。 |
目前 Management API 尚不支援將企業身分綁定或解除綁定至使用者。你僅能顯示已綁定的企業身分。
個人存取權杖 (Personal access token)
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/personal-access-tokens | 取得使用者所有個人存取權杖 (Personal access tokens)。 |
| POST | /api/users/{userId}/personal-access-tokens | 新增使用者個人存取權杖 (Personal access token)。 |
| DELETE | /api/users/{userId}/personal-access-tokens/{name} | 依名稱刪除使用者權杖。 |
| PATCH | /api/users/{userId\s}/personal-access-tokens/{name} | 依名稱更新使用者權杖。 |
個人存取權杖 (Personal access tokens) 提供使用者在不需輸入憑證與互動式登入的情況下,安全授權 存取權杖 (Access token)。詳情請參閱 使用個人存取權杖。
使用者多重要素驗證 (MFA) 設定管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/mfa-verifications | 依 user ID 取得使用者 MFA 設定。 |
| POST | /api/users/{userId}/mfa-verifications | 依 user ID 設定使用者 MFA 驗證。 |
| DELETE | /api/users/{userId}/mfa-verifications/{verificationId} | 依 ID 刪除使用者 MFA 驗證。 |
使用者帳戶刪除
| method | path | description |
|---|---|---|
| DELETE | /api/users/{userId} | 依 user ID 刪除使用者。 |
使用者工作階段管理
| method | path | description |
|---|---|---|
| GET | /api/users/{userId}/sessions | 依 user ID 取得使用者工作階段。 |
| GET | /api/users/{userId}/sessions/{sessionId} | 依 session ID 取得使用者工作階段。 |
| DELETE | /api/users/{userId}/sessions/{sessionId} | 依 session ID 刪除使用者工作階段。 |