在 JWT 令牌中传递租户 ID 是一个好的做法吗?

Not*_*bad 7 multi-tenant asp.net-core

我正在构建一个多租户 Web 应用程序,其中我将为所有租户提供 1 个应用程序和 1 个数据库。

我一直在阅读有关将租户 ID 从服务器传递到客户端的不同技术,反之亦然,以用于我的 REST 请求/响应,似乎更适合我的技术是在 JWT 令牌中传递 tennat id,因为我不会'我的租户没有不同的域,并且在 X-TENANT-ID 中传递它似乎不安全,因为任何人都可以更改它(任何有关此的信息将不胜感激)。

那么,在 JWT 令牌中传递租户 ID 是一个好习惯吗?除了其他替代方案(在 X-TENANT-ID 标头中传递租户 id)之外,还有其他更好的方法吗?

Iai*_*ain 2

我将其作为声明放入 JWT 令牌中。

您也可以通过 URL 传递它。如果您查看 Azure DevOps REST API,就会发现其中有 /{organization}/。然后,您根据 URL 验证声明。

我倾向于两者都做。将其放在 URL 中可能有助于日志记录,并且如果被授予,还可以进行匿名访问。

我正在使用 Auth0 生成令牌,老实说,支持多租户应用程序的选项很糟糕,并且无法扩展。支持一个用户访问具有不同权限的多个租户是一个挑战。如果我坚持使用 Auth0,我的计划是为每个客户端生成唯一的角色并将用户分配给它们,然后在 JWT 令牌中包含权限和租户 ID。我将为每个租户颁发一个 JWT。