繁體中文(香港)
  • management-api
  • api
  • logto
  • machine-to-machine
  • jwt

使用 Logto 管理 API:循序漸進的指南

學習如何在不同情況下為你的應用程式使用 Logto 管理 API。

Gao
Gao
Founder

雖然 Logto 提供了一個基於網頁的控制台讓你管理身份,但在你想要自動化工作流程或編程訪問 Logto 時,使用管理 API 是一個強有力的替代方案。本指南將帶你逐步了解如何在不同情況下使用 Logto 管理 API。

概覽

你可能會注意到在 Logto 控制台中有一個內建的 API 資源 "Logto 管理 API"。它在本指南中將扮演關鍵角色。

與其他 API 資源相比,目前 Logto 管理 API 並不允許最終使用者直接訪問,因為它是為機器對機器通信設計的,它非常強大,可以用來管理你的 Logto 帳戶和資源。

以下是一些你可能想要使用 Logto 管理 API 的典型情況:

CI/CD

服務通信

單頁應用

渲染 HTML 的網頁伺服器

架構

無論在什麼情況下,你都可以使用兩種模式來訪問 Logto 管理 API。

模式 1:直接訪問

在這種模式中,你的客戶端或服務將直接訪問 Logto 管理 API。在 Logto 中,客戶端或服務被稱為 "機器對機器" 應用。

使用後端服務的示例:

模式 2:間接訪問

在這種模式中,你的客戶端或服務將通過後端服務訪問 Logto 管理 API。模式 2 建立在模式 1 的基礎上,其中涉及另一個應用。該新應用可以是傳統網頁、本地或單頁應用,它將訪問後端服務。

使用單頁應用的示例:

當你想要進行自定義邏輯以控制對 Logto 管理 API 的訪問時,此模式很有用。舉例來說,你可能想要返回消費者的所有訂單,並為每個訂單附加賣家的信息。在這種情況下,你可以使用單頁應用請求後端服務獲取訂單,而在後端服務中,你可以使用 Logto 管理 API 獲取賣家的信息。

訪問 Logto 管理 API

創建一個機器對機器應用

首先,你需要在 Logto 控制台中創建一個機器對機器應用。轉到 "應用程式" 標籤並點擊 "建立應用" 按鈕。然後在 "機器對機器" 卡片中點擊 "開始建設"。

設置機器對機器角色

為了訪問 Logto 管理 API,你需要創建一個具有適當權限的機器對機器角色。在 Logto 控制台中,轉到 "角色" 標籤並點擊 "建立角色" 按鈕。點擊 "顯示更多選項" 並在 "角色類型" 部分中選擇 "機器對機器應用角色"。

現在你可以在 "分配權限" 部分中看到 "Logto 管理 API" 出現。勾選該 API 資源以獲得所有權限,然後點擊 "建立角色" 按鈕。

角色建立後,你可以將其分配給你在前面步驟中創建的機器對機器應用。

獲取訪問令牌

你可以按照本文中的步驟通過客戶端憑證授權獲得你的機器對機器應用的訪問令牌。測試該訪問令牌,向 Logto 管理 API 中的端點發送請求。

現在你已準備好使用模式 1。注意,訪問令牌在短時間內有效,因此如果你想要緩存它,可能需要定期刷新。

添加另一層

即使最終使用者不允許訪問 Logto 管理 API,你仍然可以添加另一層以利用 Logto 管理 API 的強大功能,並使它賦能你的服務。

例如,你正在使用單頁應用和後端服務構建一個在線社區。你可能想要一個功能,允許簽到的用戶查看擁有最多粉絲的前 10 名用戶。將創建一個端點 GET /api/top-users

為了確保該端點只能由簽到用戶訪問,你可以在 Logto 控制台中創建一個 "單頁應用",並集成 Logto SDK到該應用中。然後你可以使用 SDK 獲取訪問令牌並發送請求到端點:

在後端服務中,你可以首先從數據庫查詢前 10 名用戶,然後使用 Logto 管理 API 獲取用戶的信息:

最後,你可以將響應返回給單頁應用:

完整的序列圖:

在這個流程中,它涉及兩種類型的訪問令牌:一種是後端服務訪問 Logto 管理 API 的,另一種是單頁應用訪問後端服務的。

前者的訪問令牌是你在前面部分獲得的。後者的訪問令牌是你可以從 Logto SDK 獲得的。

我單頁應用中的訪問令牌不是 JSON Web Token (JWT)

如果你在呼叫 getAccessToken 方法時在 Logto SDK 中未指定資源,該訪問令牌將是一個不透明的字符串,旨在用於userinfo 端點。要獲得 JWT:

  1. 在 Logto 控制台中定義一個 API 資源,例如 https://api.example.com
  2. 將該 API 資源添加到 Logto SDK 的 resources 配置中,例如 resources: ['https://api.example.com']
  3. 使用該 API 資源呼叫 getAccessToken 方法,例如 getAccessToken('https://api.example.com')

要在你的後端服務中驗證 JWT,請參考驗證 API 請求的授權令牌

單頁應用中的 JWT 意味著什麼?

JWT 只意味著用戶已登入並嘗試訪問 API 資源。它不意味著用戶擁有該 API 資源的具體權限。是否授予用戶對 API 資源的訪問權限取決於你。

如果你需要更細緻的訪問控制,你也可以將基於角色的訪問控制 (RBAC) 應用於用戶。詳情請參閱🔐 基於角色的訪問控制 (RBAC)

結束語

Logto 管理 API 在多種情況下都十分強大且靈活。通過標準協議的幫助,你可以輕易地將 Logto 管理 API 集成到你的應用程式中,構建一個安全且可擴展的系統。如果你有任何問題,請隨時聯繫我們。