鉴权:指用户是否有访问系统的权利。

传统鉴权:通过密码来验证,他对用户时,为用户分配一个密码,或者用户自己申请,每个获得密码的用户,都已经被授权。

缺点:只要获取到用户密码,就会拥有权限身份。只能通过管理员修改用户密码,在这之前,还需要人工校验用户的合法身份。

主流鉴权:通过认证授权来验证数字签名是否正确,授权发生在鉴权之后。

二、鉴权类型

  1. HTTP Basic Authentication(HTTP基本认证)
  2. HTTP自带的权限控制和认证机制
  3. 访问者需要输入密码才能访问页面,否则返回401错误;
  4. 通过认证的方式

GET:URL上带入用户名和密码

POST:在Header中添加Authorization,值为Base64加密后的串

  1. 一种不安全的认证机制
  2. session + cookie验证
  3. Token验证
  4. OAuth(开放授权)

三、Cookie

  1. 客户端发送请求至服务器
  2. 服务器返回给客户端一个cookie
  3. 客户端保存该cookie,再次发请求至服务器,携带该cookie
  4. 服务器检查客户端传来的cookie是否与当初发送给客户端的一致
  5. 一致,则返回响应体;不一致,则返回失败

四、Session

  1. 客户端发起请求至服务器,服务器生成一个Session 和Session ID
  2. 服务器将响应内容和该sessionID(即Cookie)发送至客户端
  3. 客户端再次发起请求,携带该sessionID(即Cookie)与请求内容一并发送至服务器
  4. 服务器提取客户端发送的sessionID(即Cookie),与保存的Session ID对比

五、Token

  1. 服务器生成的一串字符串,是用户身份的验证方式
  2. 由uid、time、sign组成
  3. uid:用户唯一的身份标识
  4. time:当前时间的时间戳
  5. sign:签名,由token前几位 + 复杂算法的十六进制字符串组成
  6. 验证原理
  7. 客户端登录(用户名+密码)
  8. 服务器验证用户名和密码,成功后,签发一个Token,并回传给客户端
  9. 客户端收到Token后,进行存储,放在cookie、header或者Local Storage里
  10. 客户端每次发送请求,都携带该Token
  11. 服务器验证Token,通过,则返回响应内容;不通过,返回失败信息

六、OAuth(Open Authorization)

  1. 是一种开放授权协议,允许第三方应用程序使用资源所有者的凭据获得对资源的访问权限
  2. 四个角色
  3. 资源拥有者
  4. 资源服务器
  5. 客户端
  6. 授权服务器
  7. 四种授权模式
  8. 授权码模式:功能最完整、流程最严密
  9. 简化模式
  10. 密码模式
  11. 客户端模式
  12. 原理
  13. 客户端(Client)向资源所有者(Resource Owner)请求授权
  14. 客户端收到用户授权(资源所有者授权的凭证(Authorization))
  15. 客户端通过与授权服务器(Authorization Server)进行身份验证,并提供授权凭证来获取访问令牌(Access Token)
  16. 授权服务器对客户端进行身份验证并验证授权许可,有效,则发送访问令牌(Access Token)
  17. 客户端通过资源服务器访问受保护的资源,并通过访问令牌进行身份验证
  18. 资源服务器验证访问令牌,有效,则为请求提供服务

七、登录方式

  1. 多点登录
  2. 不同网站都有每个网站自己的用户和密码(不同数据库,不同登录模块),各站点的登录状态相互不认可,各站点需要手工逐一登录
  3. 流程

认证、授权

  1. 单点登录(Single Sign On)SSO
  2. 各站点共用一台认证服务器。用户登录任何一个站点,其他站点可免登录,且各站点可通过登录站点的登录状态进行直接交互。
  3. 简单来说,用户一次登录,即可访问所有相关联的系统,但仅限于登录访问,不负责授权。