2

我们正在使用 fusion auth 在登录时为我们的几个应用程序生成 JWT 令牌。然后这些令牌用于访问我们的几个 API。我们的 API 需要确定用户属于哪个租户。如果可以使用 JWT 令牌来完成,那就太好了。默认情况下,由 fusion auth 生成的令牌在 header 中包含 application id,在audheader 中包含 user id,sub但不包含租户 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 中访问这些数据,但是我相信您会同意这有点笨拙。

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

再次感谢您的出色工作和持续的支持

4

1 回答 1

3

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

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

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

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

另外,如果你想成为超级 JWT-y,你可以缩短声明tid或其他东西。;)

于 2019-10-29T14:17:09.767 回答