多次验证Web应用程序多个azure广告?

时间:2017-02-18 14:08:43

标签: azure azure-active-directory

我正在考虑开发一般的企业Web应用程序。我在想的是以下场景:

应用程序应该能够为多个客户提供服务(称为多租户?)。这意味着多家公司可以将这个软件用于他们的员工。

他们每个人都可能拥有自己的天蓝色广告,也可能没有。因此,我想知道是否可以对多个/不同的azure广告进行身份验证?

假设用户输入了他的电子邮件地址user1@companyA.com然后我会尝试根据在companyA.com广告后面配置的广告对他进行身份验证,当有人尝试使用user361@companyB.com登录时我会尝试对针对companyB.com配置的azure广告进行身份验证。

这可能吗?我怎么能这样做?

1 个答案:

答案 0 :(得分:8)

这就是多租户应用程序存在的确切原因。因此,任何Azure AD中的用户都可以登录您的应用程序。

它的工作方式是这样的:

  1. 您在Azure AD租户中定义应用程序,包括它可能需要的任何权限(例如从Azure AD Graph /通过Microsoft Graph等访问用户的OneDrive读取数据的能力)。
  2. 定义应用时,请将其设置为多租户。
  3. 现在,当其他组织的用户尝试登录您的应用时,系统会向他们显示同意屏幕。此屏幕描述了您的应用程序及其目录所需的权限。
  4. 一旦他们同意应用程序所需的权限,就会在其目录中为该应用程序创建服务主体。此主体有点像现在存在于其目录中的应用程序的帐户。
  5. 然后他们会转发回您的应用。
  6. 在您的应用方面需要注意几个重要事项:

    1. 您必须将用户重定向到https://login.microsoftonline.com/common/oauth2/authorize而不是特定于租户的端点。
    2. 使用ASP.NET MVC中的OpenIDConnect中间件,您必须关闭颁发者验证,并手动执行此操作(您必须检查租户之前是否已实际注册)
    3. 有关单租户与多租户的更多信息:http://www.andrewconnell.com/blog/azure-ad-what%E2%80%99s-the-difference-between-single-vs-multi-tenant

      多租户应用示例(ASP.NET MVC):https://github.com/Azure-Samples/active-directory-dotnet-webapp-multitenant-openidconnect