跳至主要內容

與 Management API 互動

什麼是 Logto Management API?

Logto Management API 是一組完整的 API,讓開發者能完全掌控實作細節,以符合產品需求與技術棧。它已預先建立,並列於 主控台 > API 資源 > Logto Management API,且無法刪除或修改。

其識別碼格式為 https://[tenant-id].logto.app/api

備註:

Logto Management API 的識別碼在 Logto CloudLogto Open Source 版本間有所不同:

  • Logto Cloud:https://[tenant-id].logto.app/api
  • Logto OSS:https://default.logto.app/api

以下範例皆以 Cloud 版本識別碼為例。

Logto Management API Resource Logto Management API Details

透過 Logto Management API,你可以存取 Logto 強大的後端服務,這些服務具高度擴展性,能應用於多種情境。它的能力遠超過僅靠管理主控台低程式碼功能所能達成的範圍。

常用 API 如下:

想瞭解更多可用 API,請造訪 https://openapi.logto.io/。

如何存取 Logto Management API

建立 M2M 應用程式

備註:

如果你尚未熟悉 M2M(機器對機器)驗證流程,建議先閱讀 瞭解驗證流程 以掌握基本概念。

前往 主控台 > 應用程式,選擇「機器對機器」應用程式類型並開始建立流程。

在建立 M2M 應用程式的過程中,你會被導向一個頁面,可以為你的應用程式指派 M2M 角色 (M2M roles)

指派 M2M 角色視窗 (Assign M2M roles modal)

或者,當你已經建立好 M2M 應用程式後,也可以在 M2M 應用程式詳細頁面指派這些角色:

指派 M2M 角色頁面 (Assign M2M roles page)

在角色指派模組中,你可以看到所有 M2M 角色,帶有 Logto 圖示的角色表示包含 Logto Management API 權限。

現在,請為你的 M2M 應用程式指派包含 Logto Management API 權限的 M2M 角色。

取得存取權杖 (Access token)

存取權杖請求基本說明

M2M 應用程式向權杖端點發出 POST 請求,以 application/x-www-form-urlencoded 格式在 HTTP 請求實體中加入以下參數來獲取存取權杖:

  • grant_type:必須設為 client_credentials
  • resource:你想要存取的資源
  • scope:存取請求的權限範圍

你還需要在請求標頭中包含 M2M 應用程式的憑證,以便權杖端點驗證你的 M2M 應用程式。

這是透過在請求的 Authorization 標頭中以 基本驗證 (Basic authentication) 形式包含應用程式的憑證來實現的,其中用戶名是 App ID,密碼是 App Secret。

你可以在 M2M 應用程式的詳細資訊頁面找到 App ID 和 App Secret:

App ID 和 App Secret

取得 Logto Management API 的存取權杖

Logto 提供了一個內建的「Logto Management API」資源,這是一個具有 all 權限的唯讀資源,用於存取 Logto Management API,你可以在你的 API 資源列表中看到它。資源 API 標示符的格式為 https://{your-tenant-id}.logto.app/api,這將是你在存取權杖請求主體中使用的資源值。

Logto Management API 詳細資訊

在存取 Logto Management API 之前,確保你的 M2M 應用程式已被分配了包含此內建「Logto Management API」資源的 all 權限的 M2M 角色。

資訊:

Logto 也為新創建的租戶提供了一個預先配置的「Logto Management API 存取」M2M 角色,該角色已經被分配了 Logto Management API 資源的所有權限。你可以直接使用它而無需手動設置權限。此預先配置的角色也可以根據需要進行編輯和刪除。

現在,將我們所有的內容組合起來並發送請求:

const logtoEndpoint = 'https://your.logto.endpoint'; // 用你的 Logto endpoint 替換
const tokenEndpoint = `${logtoEndpoint}/oidc/token`;
const applicationId = 'your-application-id';
const applicationSecret = 'your-application-secret';
const tenantId = 'your-tenant-id';

const fetchAccessToken = async () => {
return await fetch(tokenEndpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Basic ${Buffer.from(`${applicationId}:${applicationSecret}`).toString(
'base64'
)}`,
},
body: new URLSearchParams({
grant_type: 'client_credentials',
resource: `https://${tenantId}.logto.app/api`,
scope: 'all',
}).toString(),
});
};
警告:

對於 Logto Cloud 使用者:當你與 Logto Management API 互動時,不能使用自訂域名,請使用預設的 Logto endpoint https://{your_tenant_id}.logto.app/oidc/token 來授予存取權杖。

存取權杖回應

成功取得存取權杖的回應內容如下:

{
"access_token": "eyJhbG...2g", // 使用此權杖存取 Logto Management API
"expires_in": 3600, // 權杖有效時間(秒)
"token_type": "Bearer", // 使用存取權杖時的授權類型
"scope": "all" // Logto Management API 的權限範圍 (scope) 為 all
}
備註:

Logto 目前不支援將 M2M 應用程式表示為使用者。存取權杖 (Access token) 負載中的 sub 將是應用程式 ID。

使用存取權杖存取 Logto Management API

你可能會注意到權杖回應中有一個 token_type 欄位,其固定為 Bearer

因此,當你與 API 資源 (API resource) 伺服器互動時,應將存取權杖 (Access token) 以 Bearer 格式(Bearer YOUR_TOKEN)放在 HTTP 標頭的 Authorization 欄位中。

使用請求的存取權杖 (Access token) 與內建的 Logto Management API 資源 https://[your-tenant-id].logto.app/api 來獲取 Logto 中的所有應用程式:

const logtoEndpoint = 'https://your.logto.endpoint'; // 用你的 Logto endpoint 替換
const accessToken = 'eyJhb...2g'; // 存取權杖 (Access Token)

const fetchLogtoApplications = async () => {
return await fetch(`${logtoEndpoint}/api/applications`, {
method: 'GET',
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
};

Logto Management API 的典型應用場景

我們的開發者已利用 Logto Management API 實作許多進階功能。我們相信這套 API 具高度擴展性,能滿足你各種需求。以下舉幾個僅能透過 Logto Management API 實現、無法在 Logto 管理主控台完成的應用場景:

自行實作使用者個人檔案

Logto 目前尚未提供預設的使用者個人檔案 UI 解決方案。我們理解個人檔案與業務、產品屬性密切相關。在我們持續探索最佳方案的同時,建議你利用 API 自行開發。例如,你可以結合互動 API、個人檔案 API、驗證碼 API,打造符合需求的自訂解決方案。

Logto 管理主控台支援基本搜尋與篩選功能。若需模糊搜尋、精確比對、區分大小寫等進階搜尋選項,請參考我們的 進階使用者搜尋 教學與指南。

自行實作組織管理

如果你利用 組織 (Organizations) 功能打造多租戶應用,可能會需要 Logto Management API 來處理組織邀請、成員管理等任務。對於你的 SaaS 產品,當租戶中同時有管理員與成員時,Logto Management API 能協助你打造專屬的管理後台。詳情請參閱 這裡

使用 Logto Management API 的小技巧

處理分頁 API 回應

部分 API 回應可能包含大量結果,這些結果會以分頁方式呈現。Logto 提供兩種分頁資訊。

分頁回應的標頭範例如下:

Link: <https://logto.dev/users?page=1&page_size=20>; rel="first"

link 標頭會提供上一頁、下一頁、第一頁、最後一頁的 URL:

  • 上一頁的 URL 對應 rel="prev"
  • 下一頁的 URL 對應 rel="next"
  • 最後一頁的 URL 對應 rel="last"
  • 第一頁的 URL 對應 rel="first"

使用 total-number 標頭

除了標準的 link 標頭外,Logto 也會加上 Total-Number 標頭:

Total-Number: 216

這對於顯示頁碼非常方便實用。

更改頁碼與每頁數量

有兩個可選查詢參數:

  • page:指定頁碼,從 1 開始,預設值為 1。
  • page_size:指定每頁項目數,預設值為 20。

請求速率限制

備註:

僅適用於 Logto Cloud。

為確保所有使用者的服務穩定與安全,我們採用通用防火牆監控並管理網站流量。雖然未強制設置嚴格速率限制,但建議每 10 秒內請求數量不超過約 200 次,以避免觸發保護機制。

使用 Logto Management API:逐步指南

使用 Postman 幾分鐘內取得 M2M 存取權杖