【问题标题】:IIS Authentication settings with Azure AD authentication带有 Azure AD 身份验证的 IIS 身份验证设置
【发布时间】: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 提出的以下几点的想法......

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

【问题讨论】:

  • “我担心启用匿名身份验证可能会带来安全风险”,那么当有大量使用匿名身份验证的网站时,您究竟关心什么?您还知道“这是将身份验证责任从 IIS 传递给应用程序的正确方法”。
  • Azure AD 身份验证集成在 OWIN 中间件级别。所以你应该使用授权属性来保护你的网络应用程序。在 IIS 中,您只需要设置匿名身份验证,然后授权规则就会保护您。如果您使用的是 azure AD 身份验证。然后您不必再设置 windows 身份验证,因为它只使用本地 NTLM 或 kerberos。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    相关资源
    最近更新 更多