将JWT用于匿名和经过身份验证的用户

时间:2016-12-05 15:21:04

标签: authentication authorization jwt multi-tenant

我正在尝试构建一个纯JavaScript的rest-client应用程序,该应用程序必须支持从已支持 JWT 的REST服务器匿名检索信息,以便对外部应用程序进行身份验证/授权。该服务器已被其他支持多租户的客户端应用程序使用。实际上将租户信息嵌入 JWT

此外,应用程序需要支持将某些资源标记(或选择)为收藏的用户(人),因此需要为用户/角色创建和用户进一步认证/授权提供机制。但是这些用户无法隔离到单个租户,他们会想要使用跨租户资源。

所以,现在我发现我需要使用JWT值进行匿名数据检索,这当然应该是与租户无关的。这意味着我必须创建一个具有特殊角色的用户,该角色只具有只读资源的权限,除了用户创建权限(当客户端注册时),这应该是与租户无关的。当用户登录到系统时,JWT应该替换为具有用户凭证的租户不可知的那个。我不确定这是否完全正确,那么我们应该如何处理这样的情况呢?

我的另一个问题是,我们为人类客户端(租户不可知)和应用程序客户端(租户感知)提供相同的后端支持身份验证和凭据存储),所以为了处理这里的权限和租户限制,存在一些稍微复杂的逻辑。这可能只是我的印象,但我觉得在逻辑和/或数据存储中应用程序用户和人类用户之间应该存在分离。

但我不完全确定,我想知道你们中有些人是否有过这方面的经验或者对这个话题有什么看法?

1 个答案:

答案 0 :(得分:1)

您是否可以尝试以下方法:创建用户,为他们需要访问的租户分配具有只读角色的用户。

数据就像 User1 - tenant1 - 管理角色 User1 - tenant2 - 数据读取器角色 User1 - 租户3 - 用户角色

在jwt中,我们确保用户获得授权。然后我们获取可访问的租户列表,看看他是否可以访问上述数据中所请求的租户数据,然后完成授权。

HTH