【问题标题】:ASP.NET processing unauthenticated file request in site with Windows Authentication: How?ASP.NET 使用 Windows 身份验证在站点中处理未经身份验证的文件请求:如何?
【发布时间】:2016-07-13 19:40:45
【问题描述】:

我对使用 Windows 身份验证的旧版 ASP.NET Web 应用程序有一个奇怪的问题。特定页面正在崩溃,对页面和站点日志的检查表明该页面正在崩溃,因为请求未正确验证 - IIS 未请求或由 IE 11 提供任何 Windows 身份。

页面有一条奇怪的路径;花了几分钟来解码它最初是如何组装的。初始请求不是针对特定页面,而仅仅是路由到 Default.aspx 的仅文件夹 URL。处理程序检查查询字符串并相应地重定向到特定页面。

对站点的初始请求已通过身份验证,如 IIS 站点日志所示。请求被重定向到的页面 (Response.Redirect) 不会进行 身份验证。缺少 Windows 身份验证质询会使站点无法自动识别目标页面,从而导致页面崩溃(取决于身份的代码失败)。顺序是这样的:

  1. 原始网址:/sitename/folder/?parameter1=value&parameter2=value
  2. IIS 发出身份验证质询,并且经过身份验证的用户显示在日志中 - 例如域\用户
  3. 然后由文件夹/Default.aspx(IIS 中定义的默认页面)处理请求
  4. Default.aspx.cs 检查查询字符串,并通过 Response.Redirect 将请求路由到(例如)OtherPage.aspx。
  5. 请求了 OtherPage.aspx,并记录了该请求 - 没有身份验证,也没有质询
  6. OtherPage.aspx.cs 崩溃(无用户凭据)

我试图从理论上解释 ASP.NET 如何或为什么甚至允许未经身份验证的文件请求。我试图在测试环境中重现该行为,但无法这样做。我怀疑“Intranet 区域中的自动登录”可能已被禁用,或者存储的本地凭据可能存在但不知何故导致了冲突,但这些情况都没有解决。前一个确实导致失败的身份验证尝试和来自服务器的正确 401 响应(目标页面未在测试环境中触发)。

【问题讨论】:

  • “路线”是什么意思? 302重定向?还有,用的是ntlm还是kerberos?
  • 我已经修改了文本以回答“route/302”问题。我还没有进行线路跟踪来确定 NTLM 与 Kerberos。

标签: c# asp.net authentication iis


【解决方案1】:

如果不是 100% 剖析原因,对这个问题的进一步研究已经找到了解决方案。

遇到问题的用户通过电子邮件中的链接访问目标站点。由于某些未知原因,该链接阻止了 IE 和 IIS 之间的凭据交换,直到站点 URL 被放置在 IE 的“本地 Intranet”站点列表中。这允许应用“仅在 Intranet 站点中自动登录”选项,这反过来又允许身份验证工作。

这不是“100% 剖析”的原因是因为这些用户之前曾访问过该网站,其中身份验证在常规访问该网站时起作用。电子邮件消息链接如何阻止身份验证交换的确切方式尚不清楚。目前,我推测某些安全设置会在源自电子邮件链接时禁止身份验证,除非特定站点 URL 明确 被限定为受信任或 Intranet 站点。

感谢您的考虑。

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    相关资源
    最近更新 更多