首页 > 解决方案 > 带有 Azure AD 身份验证的 IIS 身份验证设置

问题描述

我有一个在 Windows Server 2016 上的 IIS 10 下运行的本地 ASP.Net Core Web API 应用程序。以前,这是使用 Windows 身份验证进行保护的,但现在已转换为用户通过 Azure AD 进行身份验证。因此,身份验证现在完全由应用程序本身处理。

我不确定我现在应该使用哪个 IIS 身份验证设置。在 IIS 中,如果我启用 Windows 身份验证,则会向用户显示一个请求用户名和密码的对话框,现在显然不需要通过标准 Microsoft Online 页面处理登录。所以我禁用了 Windows 身份验证并启用了匿名身份验证,认为这是将身份验证责任从 IIS 传递给应用程序的正确方法。

这可行,但我担心启用匿名身份验证可能会带来安全风险。

是否有人能够在使用 Azure AD 时就正确的 IIS 配置提出建议?请注意,该网站不是面向公众的,它在我的组织内部。

编辑:为了澄清我对 Lex Li 提出的以下几点的看法......

  1. 我对 IIS 匿名身份验证的理解是,它用于允许未经身份验证的用户访问网站上的部分或全部页面。我不希望这样 - 我网站上的所有页面都需要身份验证。我正在使用 Authorize 属性来实现这一点,并使用通过 MSAL 生成的令牌。
  2. 我不会说我知道匿名身份验证是让应用程序进行身份验证而不是 IIS 的正确方法。这是一个“我试过了,它似乎有效”的案例。阅读所有回复后,我很高兴这确实是正确的方法。

标签: authenticationazure-active-directoryasp.net-core-webapiiis-10

解决方案


由于身份验证现在都在应用程序中,如果应用程序编写正确,它将保护所有信息。您的设置是正确的设置。向 AAD 进行身份验证时,必须将 IIS 设置为允许匿名。

使用 msal/adal 库或您自己的 API 端点应实施检查以确保来自用户的令牌是有效令牌。如今,绝大多数网站和几乎所有 API 都使用此类方法进行保护,api 端点以令牌作为身份验证,是当今世界公认的标准。他们基本上都有“允许匿名”/ linux等价物。


推荐阅读