HTTP基本 认证
![本页使用了标题或全文手工转换](https://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
HTTP/HTTPS |
---|
![]() |
|
请求 |
报文 |
|
|
|
Authorization
Authorization: Basic <
,该凭证是
优点[编辑]
HTTP
缺点 [编辑]
现存
原理 [编辑]
文字 过程[编辑]
这一个典
客 户端请求一个需要身份认证的页面,但 是 没 有 提供 用 户名和口 令 。这通常 是 用 户在地 址 栏输入 一 个URL,或 是 打 开了一个指向该页面的链接。服 务端响应一 个401应答码[4],并提供 一 个认证域(英語 :Access Authentication)[5],头部字 段 为:WWW-Authenticate
,该字段 为要求 客 户端提供 适配的 资源。[6]WWW-Authenticate: Basic realm="Secure Area"
该例子 ,Basic
为验证的模 式 ,realm="Secure Area"
为保护域,用 于与其他请求URI作 区 别。接 到 应答后 ,客 户端显示该认证域给用户并提示 输入用 户名和口 令 。此时用 户可以选择确定 或 取消 。用 户输入 了 用 户名和口 令 后 ,客 户端软件将 对其进行处理,并在原 先 的 请求上 增加 认证消息 头(英語 :Authorization)然 后 重 新 发送再 次 尝试。过程如下:将 用 户名和口 令 拼接为用 户:密 码形式 的 字 符 串 。- 如果
服 务器WWW-Authenticate
字 段 有 指定 编码,则将字 符 串 编译成 对应的 编码(如:UTF-8)。 将 字 符 串 编码为base64。- 拼接
Basic
,放 入 Authorization
头字段 ,就像这样:Authorization Basic
。字 符 串 示 例 :用 户名:Aladdin
,密 码:OpenSesame
,拼接后 为Aladdin:OpenSesame
,编码后 QWxhZGRpbjpPcGVuU2VzYW1l
,在 HTTP头部里 会 是 这样:Authorization: Basic QWxhZGRpbjpPcGVuU2VzYW1l
。 Base64编码并非加 密 算法 ,其无法 保 证安全 与 隐私,仅用于将用 户名和口 令 中 的 不 兼 容 的 字 符 转换为均与 HTTP协议兼 容 的 字 符 集 。
在 本 例 中 ,服 务器接受 了 该认证屏幕 并返回 了 页面。如果用 户凭据 非 法 或 无效,服 务器可能 再 次 返 回 401应答码,客 户端可 以再次 提示 用 户输入口 令 。
电文过程[编辑]
1.客 户端请求(没 有 认证信 息 )[编辑]
GET /private/index.html HTTP/1.0
Host: localhost
2.服 务端应答[编辑]
HTTP/1.0 401 Authorization Required
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:18:15 GMT
WWW-Authenticate: Basic realm="Secure Area"
Content-Type: text/html
Content-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.客 户端请求(有 认证信 息 )[编辑]
GET /private/index.html HTTP/1.0
Host: localhost
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
(跟随
Authorization
4.服 务端的 应答[编辑]
HTTP/1.0 200 OK
Server: HTTPd/1.0
Date: Sat, 27 Nov 2004 10:19:07 GMT
Content-Type: text/html
Content-Length: 10476
(跟随
参考 文献 和 注 释[编辑]
- ^ HTTP
身 份验证. MDN Web文 档. [2020-01-29]. (原始 内容 存 档于2020-04-14) (中 文 ). - ^ 这里
的 “所有 的 流行 网页浏览器 ”包括 任 何 目前 市 场份额超过0.2%的 网页浏览器 ,参 见网页浏览器 比 较了解 网页浏览器 对HTTP的 支持 - ^
存 档副本 . [2010-07-10]. (原始 内容 存 档于2010-05-26). - ^ RFC 1945 Section 11. Access Authentication. IETF: 46. May 1996 [3 February 2017]. (
原始 内容 存 档于2010-11-30). - ^ T., Fielding, Roy; Tim, Berners-Lee; Henrik, Frystyk. Hypertext Transfer Protocol -- HTTP/1.0. tools.ietf.org. [2020-01-28]. (
原始 内容 存 档于2020-01-25). - ^ Frystyk, Henrik. Hypertext Transfer Protocol -- HTTP/1.0. tools.ietf.org. [2020-01-28]. (
原始 内容 存 档于2020-04-15) (英 语).