微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多租户 API 上的 Laravel Sanctum 主密钥

如何解决多租户 API 上的 Laravel Sanctum 主密钥

我正在尝试构建一个多租户 API,到目前为止,我的 API 运行良好,并且我设法实现了多租户(使用 archtechx/tenancy),使用 sanctum 颁发密钥的身份验证也工作正常。

>

应用程序的结构例如有一个中心域 example.com,有权访问该域的用户称为“超级管理员”,他们应该能够使用他们的 API 令牌进行访问(由登录时由 sanctum 颁发) ) 访问不受限制的所有其他子域(或租户)API。

租户位于 tenant.example.com 等子域中,并拥有个人数据库,每个租户一个

我正在考虑几个解决方案来实现这一点:

  1. 让超级管理员模拟租户 API 的管理员并以该管理员的身份执行操作
  2. 找到一种向在每个租户(子域)上工作的超级管理员颁发“主密钥”的方法

我倾向于第二种解决方案,因为我觉得它更优雅。我一直在网上搜索此类问题/功能的最佳实践,但没有找到与我的问题完全匹配的内容

总之,解决方案 2 是否可行?如果是这样,有没有办法用圣所颁发这样的“万能钥匙”?

我正在使用:

Laravel 8.48.1

Lighthouse-php 作为通过 Laravel 提供 GraphQL 的框架

Sanctum 作为身份验证守卫

Tenancy for Laravel 作为多租户包

解决方法

万能钥匙

一个简单的想法:您可以为 Sanctum 令牌设置 token abilities。也许您可以创建 master:access 或类似的功能,作为 Master key 的功能?您可以在为超级管理员创建 API 令牌时授予他们 master:access 能力。

这确实需要 tenant 访问 master 数据库并授权该特定密钥的能力。我不知道该包的具体实现,但我之前合作过的租户项目提供了对 master 数据库的轻松访问。您可以实施某种中间件或授权来检查用户是否拥有具有 master:access 能力的令牌。

冒充用户

您提出的其他模拟解决方案似乎也是可能的,并且根据 package documentation 由软件包提供。这确实要求每个租户都拥有某种 admin 用户。由于所有 Superadmins 都可以访问超过 1 个共享 admin 用户的租户,因此我不建议选择此选项。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。