3

在托管多个组织和应用程序的多租户系统中,一个组织可能使用系统上托管的多个应用程序,我的用户和角色模型是否应该使单个用户或角色可以跨多个应用程序和组织存在?还是应该将用户实体限制为单个组织/应用程序对,然后定义一些总体模型以将这些用户实体联系在一起?

那是:

  • 约翰·多伊是一个人

  • 他想使用 ApplicationA 和 ApplicationB

  • 他在两个不同的公司工作(请耐心等待),OrganizationA 和 OrganizationB

用户模型应该是:

  1. johndoe@someuniquesuffix 是他唯一的用户名。这使他可以访问两个组织的两个应用程序。

  2. johndoe@applicationa@organizationa 是他在 OrganizationA 的 ApplicationA 的用户名。johndoe@applicationb@organizationa 是他在 OrganizationA 的 ApplicationB 的用户名......对于 OrganizationB 也是如此。然后有一些“主”列表显示应用程序/组织的所有 4 个用户帐户对应于同一个实际“人”,John Doe?

上述相同的场景适用于我将如何设计我的角色模式。

感谢您的帮助!

4

2 回答 2

3

IMO,您应该将每组凭据限制为一个组织。此外,您应该为每个应用程序启用限制该组织内的用户可以对每个应用程序执行的操作的能力。即,每个应用程序都应该管理自己的授权角色。您需要一些方法来处理乔离开组织 A 但继续为组织 B 工作的情况。

于 2010-08-14T23:46:18.900 回答
2

就我个人而言,我认为跟踪 John Doe 是一个同时在组织 A 和组织 B 工作的人会使事情变得非常复杂,而对大多数情况没有增加太多价值。除非您有明确的商业理由在您的模型中理解 A 的 John Doe与 B 的 John Doe相同,否则我会避开它。在所有组织中维护您的用户数据库,必须处理跨组织的唯一名称(“你的意思是已经有一个 John Doe 是什么意思?那不是我!”)并拥有 UI 模型(例如,在登录时询问用户“你想今天处理 A 的数据还是处理 B 的数据?)只会增加显着的复杂性。

我的建议的一个缺点是,如果您使用 OpenID 或 OAuth 之类的第 3 方身份验证器,那么拥有多个租户的人必须使用不同的 ID 登录。例如。我使用我的 google openId 登录,我最终得到了 A 的数据,但要在 B 上工作,我需要使用我的 Twitter 帐户,因为我的 Google id 已经与 A 绑定并且仅绑定到 A。

于 2010-08-15T03:20:50.907 回答