HTTP的用户认证方式
1. Basic认证
- 步骤一:当请求的资源需要 BASIC 认证时,服务器会随状态码 401 Authorization Required,返回带 WWW-Authenticate 首部字段的响应。该字段内包含认证的方式(BASIC) 及Request-URI 安全域字符串(realm)
- 步骤二:客户端将用户 ID 及密码发送给服务器,如上图所示
- 步骤三:对认证信息的正确性进行验证。如验证通过,则返回一条包含 Request-URI 资源的响应
缺点:使用Base64编码,安全性不高,并且认证使用上不够便捷灵活
2. Digest认证
DIGEST 认证提供了高于 BASIC 认证的安全等级,但是和 HTTPS 的客户端认证相比仍旧很弱。DIGEST 认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。
3. SSL认证
SSL 客户端认证采用双因素认证
双因素认证就是指,认证过程中不仅需要用户名,密码这一个因素,还需要申请认证者提供其他持有信息。与其组合使用的认证方式就是双因素认证
第一个认证因素的 SSL 客户端证书用来认证客户端计算机
另一个认证因素的密码则用来确定这是用户本人的行为。
4. 基于表单的认证
4.1 Session 管理及 Cookie 应用
- 步骤一:客户端发送登录信息:ID和密码,使用Https进行传输保证安全性
- 步骤二:服务器验证ID和密码,如果认证通过那么创建session,并且把sessionId通过Set-Cookie的形式发送给客户端,为减轻跨站脚本攻击(XSS)造成的损失,建议事先在 Cookie 内加上 httponly 属性
- 步骤三:客户端获取到set-Cookie的响应头以后,就会将cookie保存在浏览器进程中不同于一般的cookie,会把cookie的信息保存在客户端所在的磁盘中,并且在后续发送的Http请求中都会以key-value