具有Azure AD身份验证的IIS身份验证设置

时间:2020-07-21 15:26:28

标签: authentication azure-active-directory asp.net-core-webapi iis-10

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

我不确定现在应该使用哪个IIS身份验证设置。在IIS中,如果我保持Windows Auth启用状态,则会向用户显示一个对话框,询问用户名和密码,由于通过标准的Microsoft Online页面处理登录,因此显然不需要该对话框。因此,我禁用了Windows Auth并启用了“匿名身份验证”,认为这是将身份验证责任从IIS传递到应用程序的正确方法。

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

使用Azure AD时,有人可以建议正确的IIS配置吗?请注意,该网站不是面向公众的网站,它是我组织的内部网站。

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

  1. 我对IIS匿名身份验证的理解是,它用于允许未经身份验证的用户访问网站上的部分或全部页面。我不希望这样做-我网站上的所有页面都需要身份验证。我正在使用Authorize属性来实现此目的,并通过MSAL生成令牌。
  2. 我不会说我 knew 匿名Auth是使应用程序进行身份验证而不是IIS的正确方法。这是“我尝试过并且似乎起作用”的情况。阅读所有答复后,我很高兴这确实是正确的方法。

1 个答案:

答案 0 :(得分:0)

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

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