OAuth2--笔记

157 阅读1分钟

OAuth2

「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战

为什么要用OAuth2?

单体架构

image-20211117213338212.png

分布式架构解决方案

image-20211117213410608.png

image-20211117213523981.png

令牌和密码的区别

令牌:

  1. 短期的, 自动生效
  2. 可以撤销,撤销立即生效
  3. 有权限范围

密码:

  1. 长期有效
  2. 一般不允许他人撤销
  3. 密码一般是完整权限

OAuth2授权模式

序号名称简介安全性
1授权码模式最完整和严谨授权模式, 第三方品台登录都是此模式最高
3简化模式
3密码模式把用户名密码告诉客户端,对客户端高度信任,比如客户端和服务器是同一公司一般
4客户端模式直接以客户端名义申请令牌, 很少用最差

Cookie Session 和 token的区别

  1. cookie是不能跨域的,前后端分离分布式架构实现多系统SSO非常困难
  2. 移动端应用没有cookie,所以对于移动端支持不好
  3. token基于header传递, 部分解决了CSRF攻击
  4. token要比sessionID大, 客户端存储LocalStorage中, 可以直接被JS读取

授权码模式

流程:

image-20211117213954905.png

申请授权码

client_id: 客户端id, 和授权配置类中设置的客户端id一致

response_type: 授权码模式固定

socpe:客户端范围, 和授权配置类中设置的scope一致

redirect_uri:调转uri, 当授权码申请成功后会调转到此地址,并在后边带上code参数(授权码)

简化模式

image-20211117214403928.png

密码模式

image-20211117214429459.png

客户端模式

image-20211117214450048.png