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

2024-04-26

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

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

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

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

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

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

例如,我的目标是给定以下 Windows Server 配置:

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

客户 A 的用户使用此 url:http://webhost/a

客户 B 的用户使用此 URL:http://webhost/b

当用户 A 浏览到 Web 应用程序 A 时,集成 Windows 身份验证应向用户询问 Azure AD“A”Windows 用户名和密码,或者如果已通过身份验证,则显示 Web 应用程序 A 中的用户内容。

当用户 B 浏览到 Web 应用程序 B 时,集成 Windows 身份验证应向用户询问 Azure AD“B”Windows 用户名和密码,或者如果已通过身份验证,则显示来自 Web 应用程序 B 的用户内容。

Thanks!


您绝对可以在自己的服务器上运行的应用程序上利用 Azure AD。您不需要在 IIS 级别应用设置。当您使用 Azure AD 时,Windows 集成身份验证将在客户端和 Azure AD 终结点之间进行 - 这会导致在不需要 Windows 集成身份验证的通道上发送到应用程序的令牌。这使得您的应用程序可以托管在任何地方,应用程序本身没有基础设施限制。 看一眼这个样本 https://github.com/AzureADSamples/WebApp-OpenIDConnect-DotNet有关如何设置一个应用程序以信任 Azure AD 租户的说明。您可以将相同的流程应用于所有应用程序,将它们指向不同的 AAD 租户。完成此操作后:您可以跳过插页式身份验证页面并按照说明获取 Windows 集成身份验证here http://www.cloudidentity.com/blog/2014/11/17/skipping-the-home-realm-discovery-page-in-azure-ad/。我建议您首先让示例运行起来,然后才关注最后一部分。同时解决这两件事可能很困难。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过 Azure Active Directory 对多租户 ASP.NET 应用程序进行身份验证? 的相关文章

随机推荐