OAuth2
「这是我参与11月更文挑战的第8天,活动详情查看:2021最后一次更文挑战」
为什么要用OAuth2?
单体架构
分布式架构解决方案
令牌和密码的区别
令牌:
- 短期的, 自动生效
- 可以撤销,撤销立即生效
- 有权限范围
密码:
- 长期有效
- 一般不允许他人撤销
- 密码一般是完整权限
OAuth2授权模式
序号 | 名称 | 简介 | 安全性 |
---|---|---|---|
1 | 授权码模式 | 最完整和严谨授权模式, 第三方品台登录都是此模式 | 最高 |
3 | 简化模式 | 省 | 高 |
3 | 密码模式 | 把用户名密码告诉客户端,对客户端高度信任,比如客户端和服务器是同一公司 | 一般 |
4 | 客户端模式 | 直接以客户端名义申请令牌, 很少用 | 最差 |
Cookie Session 和 token的区别
- cookie是不能跨域的,前后端分离分布式架构实现多系统SSO非常困难
- 移动端应用没有cookie,所以对于移动端支持不好
- token基于header传递, 部分解决了CSRF攻击
- token要比sessionID大, 客户端存储LocalStorage中, 可以直接被JS读取
授权码模式
流程:
申请授权码
client_id: 客户端id, 和授权配置类中设置的客户端id一致
response_type: 授权码模式固定
socpe:客户端范围, 和授权配置类中设置的scope一致
redirect_uri:调转uri, 当授权码申请成功后会调转到此地址,并在后边带上code参数(授权码)