如何使用多租户ASP.NET应用程序通过Azure Active Directory进行身份验证?

时间:2015-03-04 17:13:49

标签: asp.net iis azure azure-active-directory

我在数据中心使用Azure Active Directory试用许可证进行了一些测试。我们公司拥有自己的托管服务和物理硬件,目前我们希望保持这种状态(尽管我们可能会考虑将其全部迁移到云服务中)。

目前,我们正在尝试为使用Azure AD的客户提供单一登录选项。我们已经使用CAS支持这一点,但是一些客户已经在内部使用Azure AD并希望将其用作IIS和Linux的集成Windows身份验证方法。 ASP.NET。

如何以支持多个租户的方式进行设置?我无法弄清楚如何在IIS级别执行此操作,并且我发现文档在明确答案方面有点缺乏。

据我所知,我必须为每个客户创建一个VM(单独的Windows Server实例),配置为通过Azure AD进行身份验证并将Windows身份验证凭据传递给IIS。这有点烦人。

我是否可以继续在自己的服务器上运行IIS和ASP.NET Web应用程序,但使用Azure AD进行Windows身份验证,其中每个IIS Web应用程序实例都有自己独立的Azure AD配置?

我可以在网络应用根文件夹级别执行此操作吗? (也许通过将该文件夹的授权设置为向该客户的Azure AD中的用户授予权限?)

我的目标,例如,给定此Windows Server配置:

  • 主机(IIS 8)“webhost”
    • 网络应用“A”,c:\apps\a,授权用户包括AAD“A”用户
    • 网络应用“B”,c:\apps\b,授权用户包括AAD“B”用户

来自客户A的用户使用此网址:http://webhost/a

来自客户B的用户使用此网址:http://webhost/b

当用户A浏览到Web应用程序A时,集成的Windows身份验证应该向用户提出Azure AD“A”窗口用户名&密码,或者,如果已经过身份验证,则显示来自Web应用程序A的用户内容。

当用户B浏览到Web应用B时,集成的Windows身份验证应该向用户提出Azure AD“B”窗口用户名&密码,或者,如果已经过身份验证,则显示来自Web应用程序B的用户内容。

谢谢!

1 个答案:

答案 0 :(得分:2)

您绝对可以在自己的服务器上运行的应用程序上利用Azure AD。您不需要在IIS级别应用设置。当您使用Azure AD时,Windows集成身份验证将在客户端和Azure AD端点之间进行 - 这将导致在不需要Windows集成身份验证的通道上发送到应用程序的令牌。这就是允许您的应用程序在任何地方托管的原因,应用程序本身没有基础设施限制。 请查看this sample,了解有关如何设置一个应用以信任Azure AD租户的说明。您可以对所有应用程序应用相同的过程,将它们指向不同的AAD租户。完成后:您可以跳过插页式auth页面,按照说明here获取Windows集成身份验证。我建议你先让样本工作,然后再关注最后一部分。一次解决这两件事可能很难。