我正在尝试使用前端的Angular和节点+ Azure MS SQL分片的数据库设计在Azure AD中构建可伸缩的多租户b2b SAAS。
我已经花了一周的时间浏览MS文档和示例(tailspin,调查应用程序),并且已经开始在angular7应用程序中测试多租户行为,该应用程序除了对adal-angular4进行身份验证之外,我已经使用了大约5个其他正在生产的项目。
到目前为止,我还无法弄清楚这种不可预测行为背后的原因。我有3个租户:A-B-C
A是开发者租户+我的管理员帐户,B是另一家公司的租户+我的普通用户帐户,C是具有我的个人帐户的AD Free层租户。
除了将多租户设置切换为打开并将Oauth2implicitflow更改为true以外,我对开发人员AD上的Azure AD中的应用程序没有做任何其他事情。
如果我使用租户A登录到应用程序,则一切正常,请在控制台中 可以在TID下看到租户A的GUID。
如果我以租户B登录-第一次请求权限,然后让我进入(为什么?)。
我的问题是:
根据我阅读的文档,租户B和C尝试登录应用程序的行为没有任何意义。
答案 0 :(得分:1)
为什么它甚至允许租户B登录到应用程序?他们绝对没有提供访问权限,并且在控制台上的提示显然是第二个租户(我认为),该帐户不是可以登录的租户A的访客。
当第一个用户同意许可(并且能够这样做)时,将在其租户中创建该应用程序的服务主体并登录。 这就是设计多租户应用程序的方式。 这意味着任何租户都可以登录您的应用。
您的应用后端需要检查用户的租户ID,以确保它们是有效的之一。您的前端当然也可以进行检查,尽管它不能代替后端检查。