在多租户环境中处理重复和跨租户帐户
Dealing with duplicate and cross-tenant accounts in a multi-tenancy environment
是否有好的 "vetted" 方法来处理不同租户拥有同一帐户的多个副本?有没有推荐的设计模式?
在我的情况下,我们的应用程序基于 URL:
路由租户
https://ten_a.software.com --> selects "ten_a" tenant
https://ten_b.software.com --> selects "ten_b" tenant
我运行遇到这个问题:
Bob 在 ten_a
拥有帐户,尝试登录 ten_b.software.com
,甚至 softare.com
。如果 Bob 只是在他的浏览器中输入 URLs,让他知道使用正确的地址并不多,但是当另一个实体试图通过 OAuth2 交换对 Bob 进行身份验证时,这会变得更加复杂。该第三方可能不知道向哪个租户发送其授权请求。我在这里只看到两个解决方案:
- 请 Bob 在 username/password 旁边输入他的租户信息。最大的缺点是用户体验和 UI 开销。
- 实现基于用户名的租户路由器。最大的缺点是这似乎是一个雷区。当 Bob 拥有两个不同租户的帐户时,情况会变得更加复杂。
我在这里遗漏了什么吗?
我在这里稍微扭曲了你的问题。假设 Bob 在 ten_a
和 ten_b
?
上都有账户
如果 Bob 获得一个网络范围的帐户,可以 link Bob 的特定租户帐户在一个用户下,这将简化对第 3 方身份验证的支持。在模棱两可的情况下,仍然会有 UI 开销,因为 Bob 将不得不 select 正确的租户,但这是不可避免的。
如果问题是 Bob@ten_a 与 Bob@ten_b 是不同的人,那么 URL 路由就变得至关重要,尤其是考虑到 OAuth 支持。仅在 Bob 访问特定租户时启用 OAuth(例如 ten_a.software.com
)。尝试使用 OAuth 登录 software.com
应该会失败。
如果 Bob 忘记了租户特定 URL,租户管理员有责任提醒他。
这大致就是 Google Apps 多年前我在那里开设帐户时仍在使用的模式。
是否有好的 "vetted" 方法来处理不同租户拥有同一帐户的多个副本?有没有推荐的设计模式?
在我的情况下,我们的应用程序基于 URL:
路由租户https://ten_a.software.com --> selects "ten_a" tenant
https://ten_b.software.com --> selects "ten_b" tenant
我运行遇到这个问题:
Bob 在 ten_a
拥有帐户,尝试登录 ten_b.software.com
,甚至 softare.com
。如果 Bob 只是在他的浏览器中输入 URLs,让他知道使用正确的地址并不多,但是当另一个实体试图通过 OAuth2 交换对 Bob 进行身份验证时,这会变得更加复杂。该第三方可能不知道向哪个租户发送其授权请求。我在这里只看到两个解决方案:
- 请 Bob 在 username/password 旁边输入他的租户信息。最大的缺点是用户体验和 UI 开销。
- 实现基于用户名的租户路由器。最大的缺点是这似乎是一个雷区。当 Bob 拥有两个不同租户的帐户时,情况会变得更加复杂。
我在这里遗漏了什么吗?
我在这里稍微扭曲了你的问题。假设 Bob 在 ten_a
和 ten_b
?
如果 Bob 获得一个网络范围的帐户,可以 link Bob 的特定租户帐户在一个用户下,这将简化对第 3 方身份验证的支持。在模棱两可的情况下,仍然会有 UI 开销,因为 Bob 将不得不 select 正确的租户,但这是不可避免的。
如果问题是 Bob@ten_a 与 Bob@ten_b 是不同的人,那么 URL 路由就变得至关重要,尤其是考虑到 OAuth 支持。仅在 Bob 访问特定租户时启用 OAuth(例如 ten_a.software.com
)。尝试使用 OAuth 登录 software.com
应该会失败。
如果 Bob 忘记了租户特定 URL,租户管理员有责任提醒他。
这大致就是 Google Apps 多年前我在那里开设帐户时仍在使用的模式。