HTTP基本认证

✍ dations ◷ 2024-12-23 05:46:16 #HTTP,认证方法

在HTTP中,基本认证(英语:Basic access authentication)是允许http用户代理(如:网页浏览器)在请求时,提供 用户名 和 密码 的一种方式。

在进行基本认证的过程里,请求的HTTP头字段会包含Authorization字段,形式如下: Authorization: Basic <凭证>,该凭证是用户和密码的组和的base64编码。

最初,基本认证是定义在HTTP 1.0规范(RFC 1945)中,后续的有关安全的信息可以在HTTP 1.1规范(RFC 2616)和HTTP认证规范(RFC 2617)中找到。于1999年 RFC 2617 过期,于2015年的 RFC 7617 重新被定义。

在MDN网站,已经有对应的维基文章。

HTTP基本认证 是一种十分简单的技术,使用的是 HTTP头部字段 强制用户访问网络资源,而不是通过必要的cookie、会话ID、登录页面等(非获取访问控制的)手段。

基本上所有流行的网页浏览器都支持基本认证。基本认证很少在可公开访问的互联网网站上使用,有时候会在小型私有系统中使用(如路由器网页管理接口)。之后诞生的 HTTP摘要认证 用于替代基本认证,允许密钥以相对安全的方式在不安全的通道上传输。

程序员和系统管理员有时会在可信网络环境中使用基本认证。由于,基本认证使用的是Base64,可解码成明文,因此使用Telnet等网络协议工具进行监视时,可以直接获取内容,并用于诊断。

基本认证 并没有为传送凭证(英语:transmitted credentials)提供任何机密性的保护。仅仅使用 Base64 编码并传输,而没有使用任何 加密 或 散列算法。因此,基本认证常常和 HTTPS 一起使用,以提供机密性。

现存的浏览器保存认证信息直到标签页或浏览器被关闭,或者用户清除历史记录。HTTP没有为服务器提供一种方法指示客户端丢弃这些被缓存的密钥。这意味着服务器端在用户不关闭浏览器的情况下,并没有一种有效的方法来让用户退出。

同时 HTTP 并没有提供退出机制。但是,在一些浏览器上,存在清除凭证(credentials )缓存的方法。

这一个典型的HTTP客户端和HTTP服务器的对话,服务器安装在同一台计算机上(localhost),包含以下步骤:

注意:客户端有可能不需要用户交互,在第一次请求中就发送认证消息头。

GET /private/index.html HTTP/1.0Host: localhost

(跟随一个换行,以回车(CR)加换行(LF)的形式)

HTTP/1.0 401 Authorization RequiredServer: HTTPd/1.0Date: Sat, 27 Nov 2004 10:18:15 GMTWWW-Authenticate: Basic realm="Secure Area"Content-Type: text/htmlContent-Length: 311<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"><HTML>  <HEAD>    <TITLE>Error</TITLE>    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">  </HEAD>  <BODY><H1>401 Unauthorized.</H1></BODY></HTML>

3.客户端请求(有认证信息)

用户名“"Aladdin”,密码, password “open sesame”

GET /private/index.html HTTP/1.0Host: localhostAuthorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

(跟随一个空行,如上所述)

Authorization消息头的用户名和密码的值可以容易地编码和解码。

HTTP/1.0 200 OKServer: HTTPd/1.0Date: Sat, 27 Nov 2004 10:19:07 GMTContent-Type: text/htmlContent-Length: 10476

(跟随一个空行,随后是需凭据页的HTML文本)。

相关