幕后故事:我们如何在多租户应用中实现用户协作
在多租户应用中实现类似 Logto Cloud 协作的邀请和角色访问管理功能的实践与见解。
在多租户应用中实现类似 Logto Cloud 协作的邀请和角色访问管理功能的实践与见解。
上周, 我们在 Logto Cloud 上介绍了协作功能。如果你错过了, 快来看看吧!现在, 你可以邀请同事和合作伙伴加入你现有的 Logto 租户, 一起协作维护你应用的身份系统。
在此次功能更新中, 我们为每个 Logto 租户新增了两个角色:
秉持使用自家工具的承诺, 我们在构建用户协作时利用了我们的 RBAC(基于角色的访问控制)和组织功能。 如果你第一次接触 RBAC, 可以查看我们之前的文章 进行入门。
在这篇博客文章中, 我们将看看实现这一功能的过程, 以及这些实践如何在你开发多组织应用时为你提供帮助。
每个 Logto Cloud 租户在我们的系统中作为一个独立组织运行, 由我们自家的组织功能支持。 为了引入租户管理员和协作者角色, 我们在组织模板中创建了两个组织角色, 每个角色都分配了特定的组织权限。


我们在组织功能中提供了一组与邀请相关的管理 API。通过这些 API, 你可以, 例如:
POST /api/organization-invitations 创建并发送组织邀请到某个电子邮件地址GET /api/organization-invitations 与 GET /api/organization-invitations/{id} 查询你的邀请PUT /api/organization-invitations/{id}/status 更新邀请状态以接受或拒绝邀请更多详细信息, 请参阅完整的 API 文档。
由于邀请是通过电子邮件发送的, 确保你的电子邮件连接器已正确配置。在此次更新中, 我们引入了一种新的电子邮件模板使用类型 OrganizationInvitation, 允许自定义邀请电子邮件模板。

此电子邮件模板默认接受 {{link}} 变量, 这是到 Logto 控制台登录页的链接, 用户可以在此页面接受邀请并加入 Logto 租户。Logto Cloud 的某个登录页如下图所示:

关于如何通过管理 API 发送邀请邮件的更多详细信息, 请参阅API 文档。
通过上述设置, 我们可以通过电子邮件发送邀请, 邀请对象可以以分配的角色加入组织。
拥有不同组织角色的用户将有不同的访问令牌范围(权限)。因此, 客户端应用(Logto 控制台)和我们的后端服务应该检查这些范围, 以确定可见功能和允许的操作。
好了, 目前看来一切都连接好了, 还有什么我们遗漏了吗?
管理访问令牌中的范围更新包括:
在 Logto Cloud 中, 控制台使用 SWR 请求主动检查用户范围, 并在用户被提升为管理员时自动授权。
如果你使用 RBAC 实现类似的功能, 你需要一个机制(例如, WebSocket 或服务器推送事件)来通知你的应用范围更新, 从而启用重新授权或发放新访问令牌。Logto 还将在未来更新中提供更多 Webhook 以协助此类操作。
Logto Cloud 的多租户和协作功能利用了我们的组织功能。如果你正在开发类似的多租户应用, 考虑利用这个功能并采用类似的方法。
希望这篇博文对你有所启发。如有任何问题或讨论, 欢迎加入我们的 Discord 频道。