常用用户认证方式简介

目录
  1. Http Basic Auth
  2. 基于Cookie认证
  3. Token认证
  4. OAuth认证

Http Basic Auth

简单,每次请求都需要提供用户username、password,暴露的风险大不安全,生产环境不要使用。

基于Cookie认证

一次登录请求中在服务器端创建Session对象,保存用户相关信息并返回唯一sessionId,客户端浏览器会创建一个Cookie对象存放sessionId,以后的请求会携带sessionId用于认证。存在CSRF风险,可通过设置Refer来避免。

Token认证

和基于Cookie认证相比的好处:

  • 支持跨域访问
    Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提是传输的用户认证信息通过HTTP头传输.
  • 无状态
    在服务器端无需存储Session信息,因为Token本身包含了所有登录用户的信息,只需在客户端的cookie或local storage、 session storage中存储即可。
  • 更适用于移动应用
    原生应用不支持Cookie,需进行特殊处理。
  • CSRF
    因为不再依赖于Cookie,所以就不需要考虑对CSRF(跨站请求伪造)的防范。
  • 性能
    使用Token认证仅需要对Token进行验证和解析。基于Cookie则需要服务器存储Session信息,甚至认证还需要去查询数据库。
  • 基于标准化
    API可以采用标准化的JSON Web Token (JWT)。这个标准已经有多个后端库(.NET, Ruby, Java, Python, PHP)的支持。

OAuth认证

是一种开放授权标准,允许让第三方应用访问该用户在某web服务上存储的资源,不需将用户名密码提供给第三方应用。