REST安全(一)
## 1.身份认证 ##
HTTP认证规范定义了两种HTTP身份认证方式:HTTP Basic(基本认证)和Http Digest(摘要认证)。HTTP认证是一种无状态的认证方式,服务器容器不会为这样的登录匹配Session,身份信息随浏览器关闭而消失。Java平台包含了HTTP的两种身份认证,此外还定义了HTTP+HTML form-based authentication(表单认证)和证书认证。
基本认证,摘要认证和表单认证都是基于“用户名-密码”的认证机制,而证书认证是基于证书的认证机制。基本认证和表单认证的请求过程需要提交用户的密码信息,而且对服务器的合法性缺乏判断依据,摘要认证和证书认证的请求过程将对服务器的合法性进行验证而且不直接提交用户的密码。下面我们来讨论着4种认证方式:
1.1基本认证
HTTP的基本认证最初定义在HTTP1.0规范(RFC 1945)中,后续最新的定义包含于HTTP1.1规范和HTTP认证规范。HTTP的基本认证是指通过Web浏览器或其他客户端在发送请求时,提供用户名和密码作为身份凭证的一种登录验证方式。在请求发送之前,用户名和密码字符串通过一个冒号合并,形如:Username:Password,合并后的字符串经过Base64算法进行编码。
浏览器或客户端最终将经过Base64编码的字符串提交给服务器。Base64编码的目的并不是实习安全和隐私,而是为了将用户名和密码中的HTTP不兼容的字符转换为兼容的字符集。
HTTTP基本认证的请求过程是一个质询/回应的对话流程,即客户端请求一个需要身份认证的资源路径,但是没有提供用户名和密码。服务器端响应HTTP401(