跳至主要內容

Webhook

Logto Webhook 為各種事件提供即時通知,包括使用者帳號、角色、權限、組織、組織角色、組織權限,以及 使用者互動 的變更。

當事件被觸發時,Logto 會向你提供的 Endpoint URL 發送 HTTP 請求,內容包含事件的詳細資訊,例如使用者 ID、使用者名稱、電子郵件及其他相關細節(關於 payload 與 header 所含資料,請參閱 Webhook 請求)。你的應用程式可以處理這個請求並執行自訂動作,例如發送電子郵件或更新資料庫資料。

我們會根據用戶需求持續新增更多事件。如果你有特定業務需求,歡迎告訴我們。

為什麼要使用 Webhook?

Webhook 提供應用程式間的即時通訊,免除輪詢需求,實現即時資料更新。它們簡化了應用程式整合與工作流程自動化,無需複雜程式碼或專屬 API。

以下是 CIAM 常見 Webhook 使用案例:

  • 發送電子郵件: 設定 Webhook,讓新使用者註冊時自動發送歡迎信,或在使用者從新裝置 / 地點登入時通知管理員。
  • 發送通知: 設定 Webhook,當使用者註冊時觸發 CRM 系統的虛擬助理,提供即時客戶支援。
  • 執行額外 API 呼叫: 設定 Webhook,透過檢查使用者電子郵件網域或 IP 來驗證存取,然後使用 Logto Management API 指派具備資源權限的適當角色。
  • 資料同步: 設定 Webhook,讓應用程式即時獲知如使用者帳號停用或刪除等變更。
  • 產生報表: 設定 Webhook 接收使用者登入活動資料,並用於產生使用者參與度或使用模式報表。

術語

ItemDescription
Event當特定動作發生時,會觸發具有特定型別的 hook 事件。例如,當使用者完成註冊流程並建立新帳號時,Logto 會發出 PostRegister hook 事件。
Hook連接到特定事件的一個或一系列動作。動作可以是呼叫 API、執行程式碼片段等。
Webhook一種 hook 子型別,表示以事件 payload 呼叫 API。
假設開發者希望在使用者從新裝置登入時發送通知,可以新增一個 webhook,於 PostSignIn 事件呼叫其安全服務 API。

以下是在 Logto 中為 PostSignIn 事件啟用兩個 web hook 的範例:

常見問題

Logto 支援同步 webhook 嗎?

雖然同步 webhook 能讓使用者登入流程更順暢,但目前尚未支援(未來會支援)。因此,目前所有依賴同步 webhook 的情境都需要其他替代方案。如有疑問,歡迎聯絡我們。

如何處理使用者權限變更?

請參閱 管理使用者權限變更 指南。

如何除錯 webhook 超時?

接收 Webhook 的 endpoint 應盡快回傳 2xx 響應,告知 Logto Webhook 已成功接收。由於不同用戶對 Webhook 的處理邏輯差異極大,過於複雜的任務可能需數秒,導致 Logto Webhook 超時。最佳實踐是維護自己的事件佇列;收到 Logto Webhook 時,將事件插入佇列並立即回傳 2xx 給 Logto,然後讓自己的 worker 逐步處理佇列任務。若 worker 發生錯誤,請於自家伺服器處理。

可以從 PostSignIn webhook 取得 client IP 嗎?

可以,你可以在 Webhook payload 中取得 IP 位址、user agent 等資訊。如需目前未支援的資訊,歡迎於 GitHub issues 提出功能需求,或聯絡我們。

Webhook 與輪詢 (Webhooks vs. polling)