2016-12-05 101 views
1

我正在尝试构建纯JavaScript Rest-Client应用程序,该应用程序必须支持从REST服务器匿名检索信息,该服务器已支持用于外部应用程序的认证/授权的JWT。该服务器已被其他客户端应用程序使用,支持多租户。实际上将租户信息嵌入到JWT中。将JWT用于匿名和经过身份验证的用户

此外,应用程序需要支持将某些资源标记(或选择)为收藏的用户(人类),因此用户/角色创建以及用户的进一步认证/授权需要一种机制。但是这些用户不能被隔离到单个租户,他们会希望跨租户使用资源。

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

我的另一个担心是,我们有相同的后端支持认证和证书存储为人客户(租户无关)和应用客户端(租户感知),所以逻辑是稍微复杂一点,以便处理这里的特权和租户限制。这可能只是我的印象,但我觉得在逻辑和/或数据存储中,应用程序用户和人类用户应该是分开的。

但是我不完全确定,我想知道你们中的一些人是否有以前的经验或对这个主题有一些想法?

回答

1

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

的数据会像 用户1 - tenant1 - 管理角色 用户1 - tenant2 - 数据读取器作用 用户1 - 3租户 - 用户角色

在智威汤逊,我们确保用户被授权。然后我们得到可访问租户的列表,并查看他是否可以访问上述数据所需的租户数据,然后完成授权。

HTH

+0

谢谢你,我会尝试你的方法,并再次发表评论的经历,也许我的问题太基础 – carpinchosaurio

+0

意见,最后我用你的基于角色的逻辑的方法,对客户更换JWT匿名或经过验证的用户,租户不可知用户的数据存储现在是分开的,我发现将租户信息与JWT本身分开很有用,现在我对每个请求都使用了特殊的标题。它现在正在工作并且可以维护。谢谢你的想法。 – carpinchosaurio

相关问题