简体中文
  • webhook
  • 欢迎邮件
  • 同步授权

实际用例:用 Webhook 扩展你的认证系统

探索使用 Logto Webhook 进行身份验证和授权的真实案例,包括发送欢迎邮件、将数据同步到你的数据库、实时更新用户角色/权限,以及与第三方分析工具集成。

Ran
Ran
Product & Design

使用 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 分为两类,账户级别和组织级别,所有事件 如下所示:

logto_webhook_events_for_authentication_and_authorization.webp

为了方便你的场景细分和获取匹配数据,进行了详细划分。但是,如果你需要同时从多个事件中获取信息,可以为一个 Webhook 选择多个事件。

注意:“用户交互”类型的事件捕获 UI 中的用户操作,排除管理员发起的更改。“用户”类型事件涵盖所有用户操作,包括管理员和最终用户的操作。例如,事件 PostRegister 是指用户在登录体验中注册,而 User.Created 包括所有在 UI 界面中注册的新用户以及管理员添加的用户。

步骤 2: 确认请求载荷是否包含你需要获取的信息

不同的事件携带不同的信息,你可以确认现有信息是否能直接满足你的用例需求。例如,idusernameprimary emailprofilecustomDataidentitieslastSignInAtcreatedAtapplicationIdisSuspendedOrganizationIdOrganizationRoleIdOrganizationScopeId 等。详情请参阅 Webhook 请求。如果没有,你还可以使用管理 API 继续获取相关的用户信息。

步骤 3: 结合管理 API 扩展高级功能

你还可以使用 Logto 管理 API 实现进一步的管理和功能配置。

结论

Logto Webhook 事件不仅涵盖广泛的场景,还通过验证签名密钥和自定义头确保安全传输。你还可以查看 Logto Webhook 仪表板,以监控每个 Webhook 的传输在过去 24 小时内的情况。