跳至主要內容

Actions

Logto Actions 讓你能在驗證 (Authentication) 流程的特定階段執行受信任的 JavaScript。Action 以同步方式執行:驗證請求 (Authentication request) 會等待腳本完成,腳本結果可以更新使用者或決定流程是否繼續。

當決策必須發生在驗證流程內時,Actions 特別有用。常見應用場景包括:

  • 使用者首次登入時,從舊有身分系統遷移使用者與密碼。
  • 在 Logto 完成登入前,刷新使用者個人資料或應用程式專屬資料。
  • 呼叫外部服務並將其結果應用於 Logto 使用者。
備註:

Actions 可用於 Logto OSS 與 Logto Cloud Enterprise 方案。

注意:

Action 腳本會影響驗證 (Authentication) 並可修改使用者資料。僅應允許受信任的管理員檢視、建立、編輯、測試、啟用或刪除這些腳本。

在自架部署中,Action 腳本會在 Logto 程序內的虛擬機器中執行。請將其視為受信任的伺服器端程式碼,而非不受信任程式碼的安全邊界。

Actions 在登入流程中的角色

Logto 目前提供兩種 Action 類型:

Action typeWhen it runsWhat it can do
第一驗證因子後 (Post first-factor verification)密碼登入期間,僅在 Logto 的本地密碼驗證失敗時執行。本地密碼有效時不會執行。針對舊有系統驗證提交的認證資訊,然後建立新的 Logto 使用者或更新現有使用者並遷移提交的密碼。
登入後 (Post sign-in)使用者完成所有驗證因子(包含需要時的 MFA)後、Logto 完成登入並發放權杖前執行。使用最終登入情境更新並豐富現有 Logto 使用者。

這兩種 Action 僅在 Experience API 的 SignIn 互動中執行。第一驗證因子後僅適用於密碼登入;登入後則與驗證方式無關。

腳本模型

每種 Action 類型都有一組設定與一個名為 runAction 的 JavaScript 入口函式:

const runAction = async ({ event, environmentVariables = {} }) => {
// 檢查 event,可選擇性抓取外部資料,並回傳此 Action 類型支援的結果。
};

傳入內容包含:

  • event:實際驗證事件,其結構依 Action 類型而異。
  • environmentVariables:為此 Action 設定的字串值。這些值會透過函式參數傳遞;不會透過 process.env 取得。

編輯器會提供型別資訊,但儲存後的腳本會以 JavaScript 執行。腳本可為非同步,並可使用注入的 fetch 函式呼叫外部 HTTPS API。無法匯入套件或存取 Node.js 全域變數(如 requireprocess)。

每種 Action 類型支援的回傳結果不同;啟用 Action 前請參閱對應參考頁面。

Actions 與 Webhook

Actions 與 Webhook 用途不同:

ActionsWebhook
執行方式與驗證同步、內嵌於流程非同步,於驗證請求之外執行
可否影響當前驗證流程可以不行
可否直接修改使用者可以,透過支援的使用者 patch不行;但接收端可另行呼叫 Management API
事件涵蓋範圍精選驗證節點廣泛的互動與資料變更事件
典型用途認證遷移、發權杖前個人資料豐富化通知、下游同步、分析

需進行非同步工作的情境請用 Webhook。僅當 Logto 必須在驗證繼續前取得結果時才使用 Action。

下一步