标准/规范
概念
HTTP基本鉴权框架提供了一种通过HTTP Header发送用户名/密码信息到服务器进行登录的简单身份鉴定方法。同时定义了与方法匹配的交互方式,比如鉴权失败时服务器应返回401状态码。
由于不使用form提交也不会出现在请求体内容中,减少了一部分CSRF攻击可能性,更重要的是支持跨域授权(比如OAuth2.0),常用于需要开放资源给域外客户的场景。
实现
一个标准的HTTP Basic Auth头规则并不复杂
Authorization: Basic aG9seWhpZ2g6aGlnaGx5aG9sZQ==
- 协议头为:标准HTTP协议值 Authorization
- 协议内容为:(Basic scheme(方案) + 空格*1 + 鉴权信息)三部分组成
- 鉴权信息为:经过Base64编码的 username:password 格式的字符串,比如上例进行解码后的身份信息为
holyhigh:highlyhole
风险
- 显然,Base64并不属于加密范畴,明码传输很容易被拦截,所以这种方法通常会与TLS一起使用
- 相比跨域登录,基本鉴权更适合数据交换场景,比如将访问码放在header中进行资源请求。但如果作为同域内的登录方式 —— 比如独立构建的web服务请求资源服务授权是可以的
- 如果你已经确定将基本鉴权作为跨域数据交换的方式,显然,你需要对协议值进行各种程度的加密处理,比如与基础鉴权相关的摘要鉴权(Digest Access Authentication)。当然,你还有其他选择:OAuth2.0 、JWT
网友评论