我正在尝试使用前端中的 Angular 和节点 + Azure MS SQL 分片数据库设计在 Azure AD 中构建可扩展的多租户 b2b SAAS。
我花了一周时间浏览 MS 文档和示例(tailspin、调查应用程序),并开始在 angular7 应用程序中测试多租户行为,该应用程序除了使用adal-angular4进行身份验证外别无他用~ 5 个其他目前正在生产的项目。
到目前为止,我一生都无法弄清楚这种不可预测行为背后的原因。我有 3 个租户:A - B - C
A 是开发者租户 + 我的管理员帐户,B 是另一家公司的租户 + 我的普通用户帐户,C 是我的个人帐户的 AD 免费层租户。
除了将多租户设置切换为打开并将 Oauth2implicitflow 更改为 true 之外,我没有对开发人员 AD 上的 Azure AD 中的应用程序执行任何其他操作。
如果我使用租户 A 登录应用程序,一切都很好,在控制台中,我可以在 TID 下看到租户 A 的 GUID。
如果我使用租户 B 登录 - 它第一次要求权限,然后让我进入(为什么??)。
- 如果我使用租户 C 的“工作”帐户登录,它不会抛出任何错误,不会请求许可,返回页面而无需实际登录,并且控制台上没有任何内容。
- 如果我使用租户 C 的“个人”帐户登录,它会告诉我租户 live.com 没有为该应用程序配置。
我的问题是:
- 为什么它甚至让租户 B 登录应用程序?他们绝对没有被配置为能够访问它,并且在控制台上,tid 显然是第二个租户的意思(我认为)该帐户不是租户 A 上的来宾以便能够登录。
- 我不知道为什么租户 C 在 Azure 端没有抛出错误,而是在没有实际登录的情况下返回页面。
- 关于哪些租户可以注册该应用程序,我是否缺少任何文档?我查看了租户注册和入职文章,但它并没有真正解决问题。
根据我阅读的文档,租户 B 和 C 尝试登录应用程序的行为毫无意义。