【发布时间】:2020-11-11 00:44:44
【问题描述】:
我有一个在 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 提出的以下几点的想法......
- 我对 IIS 匿名身份验证的理解是,它用于允许未经身份验证的用户访问网站上的部分或全部页面。我不希望这样 - 我网站上的所有页面都需要身份验证。我正在使用 Authorize 属性来实现这一点,并使用通过 MSAL 生成的令牌。
- 我不会说我知道匿名身份验证是让应用程序进行身份验证而不是 IIS 的正确方法。这是一个“我试过了,它似乎有效”的案例。阅读所有回复后,我很高兴这确实是正确的方法。
【问题讨论】:
-
“我担心启用匿名身份验证可能会带来安全风险”,那么当有大量使用匿名身份验证的网站时,您究竟关心什么?您还知道“这是将身份验证责任从 IIS 传递给应用程序的正确方法”。
-
Azure AD 身份验证集成在 OWIN 中间件级别。所以你应该使用授权属性来保护你的网络应用程序。在 IIS 中,您只需要设置匿名身份验证,然后授权规则就会保护您。如果您使用的是 azure AD 身份验证。然后您不必再设置 windows 身份验证,因为它只使用本地 NTLM 或 kerberos。
标签: authentication azure-active-directory asp.net-core-webapi iis-10