Login 多租户云应用程序登录的可能设计策略?

Login 多租户云应用程序登录的可能设计策略?,login,cloud,multi-tenant,Login,Cloud,Multi Tenant,我正在开发一个多租户云应用程序,并考虑使用电子邮件地址/密码作为一般登录凭据。但是,根据此应用程序的计划销售模式,我可能有同一个用户(相同的电子邮件地址)与多个租户关联。例如,同一公司中的多个部门可能是单独的租户,或者单独的公司必须是单独的租户。在这两种情况下,同一用户(具有相同的电子邮件地址)可能是这些不同租户的用户 处理这种情况的可能设计策略是什么 我正在考虑的一种方法是将用户电子邮件凭据的创建和更新与租户分离。在这种方法中,租户可以邀请用户(通过发送电子邮件),用户可以使用相同的登录凭据访

我正在开发一个多租户云应用程序,并考虑使用电子邮件地址/密码作为一般登录凭据。但是,根据此应用程序的计划销售模式,我可能有同一个用户(相同的电子邮件地址)与多个租户关联。例如,同一公司中的多个部门可能是单独的租户,或者单独的公司必须是单独的租户。在这两种情况下,同一用户(具有相同的电子邮件地址)可能是这些不同租户的用户

处理这种情况的可能设计策略是什么

我正在考虑的一种方法是将用户电子邮件凭据的创建和更新与租户分离。在这种方法中,租户可以邀请用户(通过发送电子邮件),用户可以使用相同的登录凭据访问所有租户,只需根据需要在租户之间切换即可

我在当前的web应用程序中通常看到的是,用户必须为每个租户提供单独的电子邮件地址,这似乎是用户的负担


谢谢。

假设您的问题是关于技术设计(而不是用户体验),这是一个非常直接的解决方案。独立于租户创建用户,并允许代表“有权访问”短语的多对多关系

根据您选择的后端,设计模式有不同的表现形式:

  • RDBMS:创建一个用户表、租户表和一个对关系表有访问权的用户
  • 目录服务器(LDAP):将用户放入目录中的单个OU中,并将租户创建为组对象。然后,用户可以为他们能够访问的每个租户设置memberOf属性 上面的LDAP选项具有重载组实体的限制。如果您对LDAP模式定义足够熟悉,那么可以轻松地创建租户对象并向用户对象添加hasAccessToEnablent属性。采用这种方法将允许您使用组来表示实际的用户组(因为要使用对象类型)


    一个更高级的设计选项将包括在租户之间建立“有权使用”的关系。再加上用户与租户的关系,将打开更高级的关系建模。例如:具有部门或部门的租户,允许具有顶级租户权限的用户自动“访问”部门。

    在多租户应用程序中跨名称空间使用相同的凭据在技术上是可行的。例如,当用户登录时,应用程序可以跨名称空间进行检查,并确定他所属的所有名称空间。用户可能对这些名称空间具有不同级别的授权。这也是可以实现的

    真正的问题是应用程序可以为这些用户提供的体验。它们需要一个特殊的登录页,允许它们在名称空间之间进行选择。在会话期间,所选名称空间应该是准永久的,也就是说,直到用户注销为止。(我正试图在GAE/Python27上的一个新应用程序中实现这一点)

    其他可能性是将用户限制为单个名称空间,并要求用户对每个名称空间使用不同的凭据,这似乎是普遍的做法