使用 Azure AD 身份验证的 IIS 身份验证设置

IIS Authentication settings with Azure AD authentication

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

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

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

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

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

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

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

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