【问题标题】:Windows authentication multiple requestsWindows 身份验证多个请求
【发布时间】:2014-02-05 02:58:21
【问题描述】:

我正在使用 Windows 身份验证来保护 ASP.NET MVC5 应用程序。

一切正常,系统提示我通过浏览器弹出窗口输入凭据,并正确提供内容。

但是我经常注意到一些请求被发送 2 次或更多,并收到 401(未经授权)代码,但在再次发出请求并返回 200(OK)后不久。

我认为这是与 WWW-Authenticate 和 Authorize 请求标头协商的一部分,但我不清楚为什么即使一开始就提供了凭据,为什么还要一直发生这种情况?

这是正常行为吗? 如果不是,如何解决? 如果是,是否会对性能造成很大影响?

附上 Fiddler 和 Firefox 开发者控制台的组合截图。

【问题讨论】:

    标签: asp.net asp.net-mvc iis windows-authentication asp.net-mvc-5


    【解决方案1】:

    您遇到的是正常行为。这是身份验证如何工作的(非常)简短的描述:

    1. 请求被发送到服务器(没有凭据)=> 未通过身份验证(您的第一个请求)
    2. 服务器响应 401(拒绝访问)
    3. 浏览器出错并发回凭据 => 已通过身份验证(您的第二个请求)

    在第 3 步之后,如果服务器没有收到请求的凭据,它会发送另一个 401 响应,并且浏览器会显示 401 错误页面。更完整的描述可以在here找到。

    【讨论】:

    • 这很好,但这种情况应该一直发生吗?有没有办法告诉浏览器始终向特定域发送相同的凭据,或者它总是必须在没有凭据的情况下进行请求,然后在收到 401 后发送它们?我说的当然是后续请求。
    • @BarisaPuter,这是定义的协议。不知道有没有办法绕过。我编辑了我的答案并发布了一个包含更多信息的链接。
    • 我读了那篇文章,但仍然感到困惑。我了解最初是如何建立身份验证的,并且有大约十亿篇文章描述了该部分。但据我所知,票证的 TTL 非常短,需要客户定期更新。此外,这需要一点时间,因此在最终获得“真实”响应之前,经常会看到多个请求以 401 失败(如 2-5,如果在短时间内发送,例如请求 .js 和 .css 文件等)。这种情况在我的环境中每 5-10 分钟发生一次,但我怀疑 TTL 可以由 AD 控制器或其他东西配置
    • 每次收到 401 响应时浏览器会弹出吗?我的应用程序使用集成身份验证工作,我在 chrome 的网络选项卡中监控时看到了几次 401,但我只在登录时看到,但在那之后什么也没有。
    猜你喜欢
    • 2021-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2020-06-07
    • 2012-06-24
    相关资源
    最近更新 更多