繁體中文(台灣)
  • webhook
  • 歡迎郵件
  • 同步授權

實際使用案例:用 webhooks 擴展你的身份驗證系統

了解使用 Logto webhooks 進行身份驗證和授權的實際案例,包括發送歡迎電子郵件、將數據同步到你的數據庫、實時更新用戶角色/權限以及與第三方分析工具集成。

Ran
Ran
Product & Design

使用 Logto webhook,你可以在不需要連續輪詢更新的情況下接收有關特定事件的實時更新,例如用戶註冊、登入或重設密碼。當事件被觸發時,Logto 會向你指定的端點 URL 發送一個包含事件信息的 HTTP 請求。你的應用程序可以接收該請求並根據數據採取自定義的操作,例如發送電子郵件或更新數據庫。

有一些功能可能無法直接在 Logto 控制台中找到,但你可以考慮使用 webhook 來監控用戶行為以實現這些功能。

Logto webhooks 的使用場景

Webhook 為身份驗證系統提供了無限的可能性。以下是一些實際使用案例,我將給出示例:

1. 發送電子郵件或通知

“我可以使用 Logto 電子郵件來發送自定義的歡迎電子郵件給用戶,附帶登入鏈接嗎?我們只使用驗證碼登錄,而不使用密碼。”

雖然 Logto 的電子郵件服務當前不支持直接發送歡迎郵件,但這是 webhooks 的經典使用場景。使用 User.Created 事件,當你的端點接收到用戶註冊信息時,立即向用戶的電子郵件發送歡迎郵件。

同樣,當角色更新時通知用戶,告知管理員新成員的加入,或者推送機器人信息到 Slack 或 Discord,讓你的團隊隨時知悉。

2. 數據同步

“如果我在管理控制台中刪除一個用戶,如何與其他系統同步這一操作?”

使用 User.Deleted 事件獲取用戶被刪除的狀態變化並同步到其他系統。你還可以立即清除用戶的登入會話,這對跨應用的用戶管理將很有幫助。

“我的 Logto 租戶下有多個應用程序。我需要一個 webhook 來檢測用戶創建,確保是由特定應用程序處理。”

使用 PostRegister 事件,Payload 將包含 AppId 信息,這將幫助你處理多應用服務的個性化體驗設計。

3. 執行額外的 API 調用

“當我更改用戶的權限時,他們需要退出登錄並重新登入以使更新生效。這可以自動發生嗎?”

如果管理員更改用戶的角色或添加新權限,默認情況下,用戶需要再次登入或同意以更新存取令牌。如果你希望授權更改立即生效,可以使用 webhook User.Data.Updated 進行通知,並啟用重新同意或相應地發行新存取令牌。

此外,你也可以使用短期存取令牌過期時間或定期調用 Management API 端點以獲取用戶角色和權限,但只有通過 webhooks 你才能獲得最及時的更新。

“我想將每個新用戶新增到我的數據庫,將他們引導到‘設置你的組織’頁面,並僅允許後續用戶發送組織邀請。Logto 可以支持這個嗎?”

首先,需要數據同步,使用 webhook Post.Register 將新用戶添加到你的數據庫中。然後,使用 Logto 管理 API 設計你的設置組織和邀請提示頁面。

4. 數據分析

“我可以將 Logto 連接到我的分析工具(例如 Google Analytics、Umami、Plausible 等)來追踪用戶登入嗎?”

如果你需要分析與用戶登入或授權相關的數據,可以使用 Logto 的 webhook 功能。你可以監聽 Logto 發送的 webhooks,然後將數據集成到第三方分析工具中。

確認是否需要 webhooks

步驟 1: 確認是否有你需要的 Webhook 事件

Webhook 分為兩類,賬戶級別和組織級別,以下顯示了所有事件

logto_webhook_events_for_authentication_and_authorization.webp

為了方便你對場景進行分段並獲取匹配數據,它被詳細劃分。但是,如果你需要同時從多個事件中獲取信息,你可以為一個 Webhook 選擇多個事件。

注意:“用戶互動”類型的事件捕獲用戶在 UI 中的動作,不包括由管理員發起的更改。“用戶”類型的事件涵蓋所有用戶動作,包括管理員和終端用戶。例如,事件 PostRegister 指的是用戶在登入體驗中的註冊,而 User.Created 包含所有通過 UI 介面由用戶和管理員新增的用戶。

步驟 2: 確認請求 payload 是否包含你需要獲取的信息

不同事件攜帶的信息不同,你可以確認現有信息是否可以直接滿足你的使用案例需求。例如,idusernameprimary emailprofilecustomDataidentitieslastSignInAtcreatedAtapplicationIdisSuspendedOrganizationIdOrganizationRoleIdOrganizationScopeId 等。詳情請參考 Webhook request。如果不行,你還可以使用 Management API 繼續獲取相關用戶信息。

步驟 3: 結合 Management API 擴展高級功能

你還可以使用 Logto Management API 來實現進一步的管理和功能配置。

結論

Logto webhook 事件不僅涵蓋廣泛的場景,還通過驗證簽名密鑰和自定義標頭確保安全傳輸。你可以查看 Logto webhook 儀表板以監控傳輸在過去 24 小時內的每個 webhook。