2. Basic 认证方案 (Basic Authentication Scheme)
basic 认证方案基于如下模型: 客户端 (client) 必须针对每个 realm 使用 user-ID 与 password 来证明自身身份.realm 值应被视为一个不透明字符串 (opaque string), 只能与该服务器 (server) 上的其他 realm 做相等性比较.只有当服务器能够验证该 Request-URI 所属保护空间 (protection space) 的 user-ID 和 password 时, 它才会为该请求 (request) 提供服务.该方案没有可选认证参数 (optional authentication parameters).
对于 Basic 认证, 上述框架 (framework) 具体使用如下形式:
challenge = "Basic" realm
credentials = "Basic" basic-credentials
当源服务器 (origin server) 收到针对某个保护空间内 URI 的未授权请求 (unauthorized request) 时, MAY 使用如下挑战 (challenge) 进行响应:
WWW-Authenticate: Basic realm="WallyWorld"
其中 "WallyWorld" 是服务器分配的字符串, 用于标识该 Request-URI 的保护空间.代理 (proxy) 也可以使用 Proxy-Authenticate 首部字段, 以相同形式的挑战进行响应.
为了获得授权 (authorization), 客户端会在凭据 (credentials) 中发送一个经过 Base64 [7] 编码的字符串, 其中包含由单个冒号 (":") 字符分隔的 userid 和 password.
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
userid 可能区分大小写.
如果用户代理 (user agent) 希望发送 userid "Aladdin" 和 password "open sesame", 那么它将使用如下首部字段:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
客户端 SHOULD 假定: 在 Request-URI 的路径字段 (path field) 中, 与最后一个符号元素 (symbolic element) 所在深度相同或更深的所有路径, 也都位于当前挑战中 Basic realm 值所指定的保护空间内.客户端 MAY 在尚未收到服务器另一个挑战的情况下, 预先为该保护空间内资源的请求发送相应的 Authorization 首部.类似地, 当客户端向代理发送请求时, 它也可以在尚未收到代理服务器另一个挑战的情况下, 在 Proxy-Authorization 首部字段中复用该 userid 和 password.与 Basic 认证相关的安全注意事项, 见第 4 节.