使用 fusion auth JWT populate lambda 是否可以将租户 ID 添加为声明?

Using the fusion auth JWT populate lambda is it possible to add the tenant id as a claim?

我们正在使用融合身份验证在我们的几个应用程序登录时生成 JWT 令牌。这些令牌然后用于访问我们的几个 API。我们 API 需要确定用户属于哪个租户。如果这可以使用 JWT 令牌来完成,那就太好了。默认情况下,fusion auth生成的token包含audheader中的application id和subheader中的user id,但不包含tenant id。

]

我们确实有其他方法来识别用户所属的租户,到目前为止一直在为我们工作,但它总是感觉有点变通,并增加了请求的开销。

我们成功地使用 JWT lambda populate 为用户添加自定义声明,我认为这是添加租户 ID 的方法,但它不适用于 populate 方法:

例如:

// It would be great if the tenant context was passed as an argument to the populate method

function populate(jwt, user, registration, tenant) {

  // Add the tenant id claim
  jwt.tenantId = tenant.id;

  // Add other claims....
}

解决方法是将租户 ID 添加到用户自定义数据中,然后我们就可以在 lambda 中访问这些数据,但是我相信您会同意这有点笨拙。

目前有什么方法可以通过融合身份验证来完成吗?或者它是否需要一些工作,如果需要,我可以将其作为功能请求提出?

再次感谢您的出色工作和一如既往的支持

tenantId 位于传递到 lambda 的用户对象上。您可以像这样将其移动到 JWT:

function populate(jwt, user, registration) {
  jwt.tenantId = user.tenantId;
}

API 文档中似乎缺少此内容。我已经更新了它,它应该很快就会可用。

编辑: 该字段现在记录在 API 文档中的用户对象上:https://fusionauth.io/docs/v1/tech/apis/users

此外,如果您想成为超级 JWT-y,可以将声明缩短为 tid 或其他内容。 ;)