Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Active directory Azure AD多租户应用程序不可预测的行为?_Active Directory_Azure Active Directory_Multi Tenant_Activedirectorymembership - Fatal编程技术网

Active directory Azure AD多租户应用程序不可预测的行为?

Active directory Azure AD多租户应用程序不可预测的行为?,active-directory,azure-active-directory,multi-tenant,activedirectorymembership,Active Directory,Azure Active Directory,Multi Tenant,Activedirectorymembership,我正在尝试在Azure AD中使用Angular前端和node+Azure MS SQL分片数据库设计构建一个可扩展的多租户b2b SAAS 我花了一周的时间阅读MS文档和示例(tailspin、survey应用程序),并开始在angular7应用程序中测试多租户行为,该应用程序上除了身份验证之外没有其他功能,我还使用了其他5个目前正在生产的项目 到目前为止,我一辈子都无法找出这种不可预测的行为背后的原因。我有3个房客:A-B-C A是开发者租户+我的管理员帐户,B是另一家公司的租户+我的普通用

我正在尝试在Azure AD中使用Angular前端和node+Azure MS SQL分片数据库设计构建一个可扩展的多租户b2b SAAS

我花了一周的时间阅读MS文档和示例(tailspin、survey应用程序),并开始在angular7应用程序中测试多租户行为,该应用程序上除了身份验证之外没有其他功能,我还使用了其他5个目前正在生产的项目

到目前为止,我一辈子都无法找出这种不可预测的行为背后的原因。我有3个房客:A-B-C

A是开发者租户+我的管理员帐户,B是另一家公司的租户+我的普通用户帐户,C是我个人帐户的无广告层租户

除了将多租户设置切换为on并将Oauth2implicitflow更改为true,我在开发者广告上的Azure广告中没有对我的应用程序做任何其他操作

  • 如果我与租户A一起登录到应用程序中,在控制台中,一切都很好 可以在TID下查看租户A的GUID

  • 如果我使用租户B登录-它第一次请求权限,然后允许我进入(为什么??)

  • 如果我使用租户C“work”帐户登录,它不会抛出任何错误,也不会请求权限,返回页面时不会实际登录,控制台上也不会显示任何内容
  • 如果我使用租户C“个人”帐户登录,它会告诉我租户live.com未为应用程序设置
我的问题是:

  • 为什么它甚至让租户B登录到应用程序?他们肯定没有设置为能够访问它,在控制台上,tid显然是第二个租户,这意味着(我认为)该帐户不是租户a上能够登录的来宾
  • 我不知道为什么租户C在Azure端没有抛出任何错误,而是返回页面而没有实际登录
  • 是否有我丢失的租户可以注册到应用程序的文档?我已经看过了,但它并没有真正解决这个问题
  • 根据我阅读的文档,租户B和C试图登录应用程序的行为毫无意义

    为什么它甚至让租户B登录到应用程序?他们肯定没有设置为能够访问它,在控制台上,tid显然是第二个租户,这意味着(我认为)该帐户不是租户a上能够登录的来宾

    当第一个用户同意权限(并且能够这样做)时,将在其租户中创建应用程序的服务主体,并登录。 这就是多租户应用程序的工作原理。 这意味着任何租户都可以登录到您的应用程序


    您的应用程序后端需要检查用户的租户ID,以确定他们是否有效。当然,您的前端也可以进行检查,尽管它不能取代后端检查。

    对于第一个问题,当第一个用户同意权限(并且能够这样做)时,应用程序的服务主体已在其租户中创建,并已登录。@juunas这意味着任何拥有帐户的人都可以从技术上注册到我的应用程序?关于如何限制这种行为,我是否缺少一份文档?很明显,我只希望该应用程序被“允许”的租户使用。AD中应用上的“设置”设置为“手动”,当前没有其他选项。目前没有。您的应用后端需要检查用户的租户ID,以确定他们是否有效。当然,您的前端也可以进行检查,尽管它无法替代后端检查。多租户应用程序=任何Azure AD租户都可以使用此功能app@juunas感谢您的洞察力——有了这些知识,我可以推断出什么是异常,什么是期望的行为。我将继续将租户C的行为视为租户C的错误,而不是认为租户B是异常现象。如果你把你的答案作为答案贴出来,我很乐意把它标记为正确的解决方案!谢谢