用401理解基本认证

时间:2012-12-22 19:05:47

标签: iis http-headers wcf-data-services basic-authentication http-status-code-401

我对Web浏览器的基本身份验证感到有点困惑。我原以为Web浏览器只会在上一个响应中收到HTTP 401状态后发送Authorization标头。但是,Chrome似乎会随后向每个请求发送Authorization标头。它有一次我输入的数据,以响应我网站上的401,并随每条消息一起发送(根据Chrome和我的网络服务器附带的开发人员工具)。这是预期的行为吗?是否有一些标题我应该用我的401来推断授权的东西不应该被缓存?我目前正在使用WWW-Authenticate标题。

2 个答案:

答案 0 :(得分:7)

这是RFC 2617 (Section 2)中定义的浏览器的预期行为:

A client SHOULD assume that all paths at or deeper than the depth of
the last symbolic element in the path field of the Request-URI also
are within the protection space specified by the Basic realm value of
the current challenge. A client MAY preemptively send the
corresponding Authorization header with requests for resources in
that space without receipt of another challenge from the server.
Similarly, when a client sends a request to a proxy, it may reuse a
userid and password in the Proxy-Authorization header field without
receiving another challenge from the proxy server. See section 4 for
security considerations associated with Basic authentication.
据我所知,基本HTTP身份验证无法执行注销/重新身份验证。这与缺乏HTTP基本身份验证的安全性是大多数网站现在使用表单和cookie进行身份验证解决方案的原因。

答案 1 :(得分:1)

来自RFC 2617

  

如果先前的请求已被授权,则      相同的凭证可以重复用于其中的所有其他请求      保护空间由一段时间决定      身份验证方案,参数和/或用户首选项。

根据我的经验,看到浏览器自动为后续请求发送基本凭据是很常见的。它可以防止为额外的资源进行额外的往返。