实际用例:用 Webhook 扩展你的认证系统
探索使用 Logto Webhook 进行身份验证和授权的真实案例,包括发送欢迎邮件、将数据同步到你的数据库、实时更新用户角色/权限,以及与第三方分析工具集成。
使用 Logto Webhook,你可以接收特定事件的实时更新,例如用户注册、登录或重置密码,而无需持续轮询更新。当事件被触发时,Logto 会向你指定的端点 URL 发送包含该事件信息的 HTTP 请求。你的应用程序可以接收该请求并根据数据采取自定义操作,例如发送电子邮件或更新数据库。
在 Logto 控制台中,你可能找不到一些直接的功能,但你可以考虑利用 Webhook 监控用户行为来实现这些功能。
Logto Webhook 的使用场景
Webhook 为认证系统提供了无限可能。以下是一些我将举例说明的真实用例:
1. 发送电子邮件或通知
“我可以使用 Logto Email 向用户发送带有登录链接的自定义欢迎邮件吗?我们只使用验证 码登录,没有密码。”
虽然 Logto 的电子邮件服务目前不支持直接发送欢迎邮件,但这是一种经典的 Webhook 使用场景。使用 User.Created
事件,当你的端点收到用户注册信息时,立即向用户的电子邮件发送欢迎邮件。
类似地,在角色更新后通知用户,向管理员告知新成员,或向 Slack 或 Discord 发送机器人消息以保持团队更新。
2. 数据同步
“如果我在管理员控制台中删除一个用户,如何与其他系统同步?”
使用 User.Deleted
事件获取用户被删除的状态更改并将其同步到其他系统。你还可以立即清除用户的登录会话,这对跨应用的用户管理非常有益。
“在我的 Logto 租户下有几个应用程序。我需要一个 Webhook 来检测用户创建,确保由特定的应用程序处理。”
使用 PostRegister
事件,载荷将包含 AppId
信息,这将有助于你处理多个应用服务的个性化体验设计。
3. 执行额外的 API 调用
“当我更改用户的权限时,他们必须注销并重新登录才能生效。可以自动发生吗?”
如果管理员更改用户角色或添加新权限,默认情况下,用户需要重新登录或同意以更新访问令牌。如果你希望授权更改立即生效,可以使用 Webhook User.Data.Updated
进行通知,并相应地启用重新同意或发放新的访问令牌。
此外,你还可以使用短期访问令牌过期时间或定期调用 Management API 端点以获取用户角色和权限,但只有通过 Webhook 才能获得最及时的更新。
“我想将每个新用户添加到我的数据库中,并将他们发送到‘设置组织’页面,并且仅允许对后续用户进行组织邀请。Logto 能支持吗?”
首先,需要进行数据同步,使用 Webhook Post.Register
将新用户添加到你的数据库中。然后,使用 Logto 管理 API 设计你的组织设置和邀请提示页面。
4. 数据分析
“我可以将 Logto 连接到我的分析工具(Google Analytics、Umami、Plausible 等)以跟踪用户登录吗?”
如果需要分析与用户登录或授权相关的数据,可以使用 Logto 的 Webhook 功能。你可以监听 Logto 发送的 Webhook,然后将数据集成到第三方分析工具中。
确认是否需要 Webhooks
步骤 1: 确认是否有你需要的 Webhook 事件
Webhook 分为两类,账户级别和组织级别,所有事件 如下所示:
为了方便你的场景细分和获取匹配数据,进行了详细划分。但是,如果你需要同时从多个事件中获取信息,可以为一个 Webhook 选择多个事件。
注意:“用户交互”类型的事件捕获 UI 中的用户操作,排除管理员发起的更改。“用户”类型事件涵盖所有用户操作,包括管理员和最终用户的操作。例如,事件 PostRegister
是指用户在登录体验中注册,而 User.Created
包括所有在 UI 界面中注册的新用户以及管理员添加的用户。
步骤 2: 确认请求载荷是否包含你需要获取的信息
不同的事件携带不同的信息,你可以确认现有信息是否能直接满足你的用例需求。例如,id
、username
、primary email
、profile
、customData
、identities
、lastSignInAt
、createdAt
、applicationId
、isSuspended
、OrganizationId
、OrganizationRoleId
、OrganizationScopeId
等。详情请参阅 Webhook 请求。如果没有,你还可以使用管理 API 继续获取相关的用户信息。
步骤 3: 结合管理 API 扩展高级功能
你还可以使用 Logto 管理 API 实现进一步的管理和功能配置。
结论
Logto Webhook 事件不仅涵盖广泛的场景,还通过验证签名密钥和自定义头确保安全传输。你还可以查看 Logto Webhook 仪表板,以监控每个 Webhook 的传输在过去 24 小时内的情况。