可选的HTTP基本身份验证

tob*_*bib 1 authentication http wget

我想在一个网站上公开一些内容,而其他一些内容仅对经过身份验证的用户可见。因此,身份验证是可能的,但不是必需的。我想知道这是否可能。

一些背景:

首先要告诉客户端身份验证可用,我需要发送一些标头。据我了解RFC 2617,“ WWW-Authenticate”标头字段必须始终是“ 401(未经授权)”响应的一部分。

现在,某些客户端(例如wget)在获得401标头时将停止尝试(wget实际上使用术语“需要授权”而不是“未经授权”)。

那么,这是wget错误还是没有可选的HTTP基本身份验证之类的东西?

Ada*_*son 5

401 Unauthorized专用于需要授权但未提供(或未正确提供)授权的情况。

在您的方案中,您只发送WWW-Authenticate需要身份验证的请求的标头-如果auth被取消或不令人满意,则返回401

在发出要求进行身份验证的请求之前,不会提示用户进行身份验证。没有任何请求具有可选身份验证-请求是否允许匿名用户使用。

值得注意的是,由于以下几个原因,HTTP身份验证是网站登录的错误选择:

  • 没有注销的概念
  • 身份验证详细信息以纯文本发送(除非通过SSL)
  • 接口/ UX无法修改
  • 没有密码提示,自我注册,最低密码要求等内容

HTTP身份验证来自网站是静态的时代,因此安全性是在Web服务器级别处理的。