使用fusion auth JWT填充lambda是否可以将租户id添加为声明?
我们正在使用fusion auth为我们的几个应用程序在登录时生成JWT令牌。然后,令牌用于访问我们的几个API。我们的API需要确定用户属于哪个租户。如果可以使用JWT令牌来实现这一点,那就太好了。默认情况下,fusion auth生成的令牌包含使用fusion auth JWT填充lambda是否可以将租户id添加为声明?,jwt,fusionauth,Jwt,Fusionauth,我们正在使用fusion auth为我们的几个应用程序在登录时生成JWT令牌。然后,令牌用于访问我们的几个API。我们的API需要确定用户属于哪个租户。如果可以使用JWT令牌来实现这一点,那就太好了。默认情况下,fusion auth生成的令牌包含aud头中的应用程序id和sub头中的用户id,但不包含租户id 我们确实有其他方法来识别用户所属的租户,到目前为止,这些方法一直在为我们工作,但这总感觉像是一种变通方法,会增加请求的开销 我们成功地使用JWT lambda populate向用户添加
aud
头中的应用程序id和sub
头中的用户id,但不包含租户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中访问这些数据,但是我相信您会同意这有点笨拙
目前使用fusion auth有什么方法可以做到这一点吗?或者它需要一些工作,如果需要的话,我可以将其作为一个功能请求提出
再次感谢您的出色工作和持续支持
tenantId
位于传递到lambda的用户对象上。您可以将其移动到JWT,如下所示:
function populate(jwt, user, registration) {
jwt.tenantId = user.tenantId;
}
API文档中似乎缺少此项。我已经更新了,应该很快就可以使用了
编辑:此字段现在记录在API文档中的用户对象上:
此外,如果你想成为超级JWT-y,你可以将声明缩短为
tid
或其他内容 谢谢你的迅速回复。我们已经测试过了,效果非常好!用户对象确实包含可以轻松添加到声明中的租户属性。哈哈!感谢您的建议,我们将继续:D这样做的能力将极大地改进我们的安全中间件