Skip to main content

2. Basic Authentication Scheme (基本认证方案)

"basic"认证方案基于这样的模型:客户端必须使用用户ID和密码对每个领域 (Realm) 进行身份验证。realm值应被视为不透明字符串,只能与该服务器上的其他realm进行相等性比较。只有当服务器可以验证Request-URI保护空间的用户ID和密码时,服务器才会处理请求。没有可选的认证参数。

对于Basic认证,上述框架的使用方式如下:

challenge   = "Basic" realm
credentials = "Basic" basic-credentials

收到对保护空间内URI的未授权请求后,源服务器可以 (MAY) 使用如下挑战进行响应:

WWW-Authenticate: Basic realm="WallyWorld"

其中"WallyWorld"是服务器分配的用于标识Request-URI保护空间的字符串。代理可以使用Proxy-Authenticate头字段以相同的挑战进行响应。

要获得授权,客户端发送用户ID和密码,用单个冒号(":")字符分隔,在凭据中使用base64 [7] 编码的字符串。

basic-credentials = base64-user-pass
base64-user-pass = <base64 [4] encoding of user-pass,
except not limited to 76 char/line>
user-pass = userid ":" password
userid = *<TEXT excluding ":">
password = *TEXT

用户ID可能区分大小写。

如果用户代理希望发送用户ID "Aladdin" 和密码 "open sesame",它将使用以下头字段:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

客户端应该 (SHOULD) 假设Request-URI路径字段中最后一个符号元素的深度或更深的所有路径也在当前挑战的Basic realm值指定的保护空间内。客户端可以 (MAY) 主动发送相应的Authorization头,用于该空间中的资源请求,而无需从服务器接收另一个挑战。类似地,当客户端向代理发送请求时,它可以在Proxy-Authorization头字段中重用用户ID和密码,而无需从代理服务器接收另一个挑战。有关与Basic认证相关的安全考虑,请参见第4节。