HTTP的用户认证方式

HTTP的用户认证方式

1. Basic认证

1526717218205

  • 步骤一:当请求的资源需要 BASIC 认证时,服务器会随状态码 401 Authorization Required,返回带 WWW-Authenticate 首部字段的响应。该字段内包含认证的方式(BASIC) 及Request-URI 安全域字符串(realm)
  • 步骤二:客户端将用户 ID 及密码发送给服务器,如上图所示
  • 步骤三:对认证信息的正确性进行验证。如验证通过,则返回一条包含 Request-URI 资源的响应

缺点:使用Base64编码,安全性不高,并且认证使用上不够便捷灵活

2. Digest认证

1526717389002

DIGEST 认证提供了高于 BASIC 认证的安全等级,但是和 HTTPS 的客户端认证相比仍旧很弱。DIGEST 认证提供防止密码被窃听的保护机制,但并不存在防止用户伪装的保护机制。

3. SSL认证

SSL 客户端认证采用双因素认证

双因素认证就是指,认证过程中不仅需要用户名,密码这一个因素,还需要申请认证者提供其他持有信息。与其组合使用的认证方式就是双因素认证

第一个认证因素的 SSL 客户端证书用来认证客户端计算机

另一个认证因素的密码则用来确定这是用户本人的行为。

4. 基于表单的认证

1526718629646

  • 步骤一:客户端发送登录信息:ID和密码,使用Https进行传输保证安全性
  • 步骤二:服务器验证ID和密码,如果认证通过那么创建session,并且把sessionId通过Set-Cookie的形式发送给客户端,为减轻跨站脚本攻击(XSS)造成的损失,建议事先在 Cookie 内加上 httponly 属性
  • 步骤三:客户端获取到set-Cookie的响应头以后,就会将cookie保存在浏览器进程中不同于一般的cookie,会把cookie的信息保存在客户端所在的磁盘中,并且在后续发送的Http请求中都会以key-value