可选的http基本身份验证

时间:2013-01-19 20:35:41

标签: http authentication wget

我希望有一个网站,其中某些内容是公开的,而其他一些内容仅对经过身份验证的用户可见。因此可以进行身份​​验证,但不是必需的。我想知道这是否可能。

一些背景知识:

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

现在有些客户端(例如wget)会在获得401标头时停止尝试(wget实际上使用“需要授权”而非“未授权”这一术语。)

这是一个wget bug还是没有可选的http basic auth?

1 个答案:

答案 0 :(得分:4)

401 Unauthorized专门用于授权需要但未提供(或未正确提供。

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

在提出要求之前,系统不会提示用户进行身份验证。没有请求具有可选身份验证 - 请求允许匿名用户或不允许。

值得注意的是,HTTP身份验证是网站登录的不错选择,原因如下:

  • 没有退出的概念
  • 身份验证详细信息以纯文本格式发送(除非通过SSL)
  • 界面/ UX无法修改
  • 没有密码提醒,自行注册,最低密码要求等等。

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