我们目前需要构建一个具有跨租户用户的多租户应用程序。也就是说,业务数据是由租户分隔的,但是用户可以属于多个租户,并且应该能够访问每个租户的所有数据。我的问题是这有意义吗?如果是的话,我们如何使用OpenID连接来处理这个场景的登录?当我在过去使用OpenID连接完成多租户时,tenantId已经成为登录的一部分。给定的需求显着地使事情复杂化。我应该推回去吗?这个需求的主要原因是防止属于多个租户的用户不得不进行多个登录。有什么想法?
发布于 2020-01-03 23:03:20
我同意罗伯特·H.的观点,术语在这里有一个首要的问题。您的客户没有一致或正确地使用这些术语,因此使用该术语进行的任何需求讨论都是有问题的。避开它。
相反,谈论用例。这一要求可能会以简单的措辞重新表述如下:
作为一个用户,我需要能够访问所有的租户特定的网站,而不需要输入我的密码不止一次。
如果这是整个需求的范围,那么它应该不会很难实现,而且已经有一些标准支持它。毕竟,您可以使用Facebook或Google登录多个网站,而无需多次输入您的密码,并且这些孤立的网站至少与您的租户一样分开。如果你这样想的话,这个问题应该是微不足道的。
不要把它看作是“交叉租户用户”。这是一种解决办法,而不是一项要求。首先关注用例,然后根据这些案例确定解决方案。
发布于 2020-01-03 22:55:59
是的,这是合理的,例如,结合SSO,但它削弱了租户的独立性。
原则上,在多租户体系结构中,您希望每个租户独立于其他租户,就像--如果它是单独的系统。这意味着每个租户都应该有自己的用户管理。
然而,一些用户可能不得不对几个租户进行工作。例如,在我的公司,我们运行一个多租户系统,其中有几个系统管理员和审计员需要访问几个租户。但我也可以想象,共享服务中,相同的用户为不同的法律实体管理操作。
对于这种情况,自然的多租户方案是保持租户之间的严格隔离.用户需要在登录时选择租户,您必须复制相关帐户。这是很麻烦,但完全符合多租户的目标和工作非常好.直到你想要实现一些单一的登录。
使用SSO,您仍然可以要求用户首先选择租户,然后在正确的租户中使用SSO凭据。但是对于99%的用户来说,这将需要额外的选择他们注册的唯一租户,而SSO则被期望获得平滑的无缝访问,在连接到系统时避免任何不必要的步骤。换句话说,您可以将每个租户的用户管理分开,但这不符合您想要通过SSO提供的用户体验。
因此,对用户帐户进行全球管理是有意义的。通过这种方式,您可以使用SSO凭据连接到多个租户,系统将要求您使用该租户,前提是您在多个租户中拥有凭证。
在这种情况下,您的数据模型将分离:
这样,您仍然符合多租户(惟一帐户标识除外),并允许在租户级别管理所需的元素,以确保由负责租户的实体进行操作控制。
https://softwareengineering.stackexchange.com/questions/403274
复制相似问题