Oauth2
OAuth2概念
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NGvzqVwb-1640140757710)(images/r9RLAlOG4WP0PmmfoeM3pADKtP4R8b_VCAZgwQ3vsRU.png)]](https://i-blog.csdnimg.cn/blog_migrate/f2229739788a415766b251ab3701fdff.png)
OAuth2是目前最流行的授权协议,用来授权第三方应用,获取用户数据
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Y6keHE6-1640140757715)(images/_O-0Pt1YWTm02Vb7VYASnWeR6mrsXElE3mYbpuEdyk0.png)]](https://i-blog.csdnimg.cn/blog_migrate/f84beeefcfee821c84e221d4ef1b2128.png)
令牌和密码的区别
令牌:
- 令牌是短期的,会自动失效
- 可以撤销,撤销立即生效
- 有权限范围,比如只能进 2号门
密码:
- 长期有效
- 一般不允许他人撤销
- 密码一般是完整权限
OAuth2 用来授权协议 java是用spring security auth框架实现
OAuth授权模式
- 授权码模式:最完整和严谨的授权模式,第三方平台登录都是此模式,安全性最高
- 简化模式:省略授权码阶段,客户端时纯静态页面采用,安全性较高
- 密码模式:把用户名密码告诉客户端,对客户端高度信任,比如客户端和认证服务器时同一个公司,安全性一般
- 客户端模式:直接以客户端名义申请令牌(很少用),安全性最差
几种Session方案
1.单体架构 cookie session机制

2.分布式架构方案:session共享
- session复制- 节点多的话会出问题
- session延连- 如果断开那么无法继续访问,不是高可用
- session共享- 目前主流session方案
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q3AsgdAI-1640140757720)(images/a9rPRolmvO7oF3NOxgqF8Fym5fvPvgSuE4Dnxk63xyc.png)]](https://i-blog.csdnimg.cn/blog_migrate/07beb0cd549335520325f00e72c8c0c2.png)
3.基于token
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCHW8oXw-1640140757722)(images/JYaF1R1BgCU_DBkLf7WJWGFV8Rnu1uYCa_kWeKzsAmA.png)]](https://i-blog.csdnimg.cn/blog_migrate/5e30500c32389ad631cbee56bda6e881.png)
为什么要用OAuth2
- cookie是不能跨域(域名、端口或协议不同)的,前后端分离分布式架构实现多系统SSO非常难
- 移动端应用没有cookie,所以对移动端支持不好
- token基于header传递,部分解决乐CSRF攻击
- token要比sessionID大,客户端存储再Local Storage中,可以直接JS读取
实战操作
工程结构
- 授权服务器:颁发和验证令牌
- 资源服务器:提供需要令牌才能访问的服务
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Ke5FUAc-1640140757725)(images/Ci49dLhgZrVkvRTS4EQAPLPS0hoGV-_fp8G3p1zTt18.png)]](https://i-blog.csdnimg.cn/blog_migrate/c0463eab5f06b0a58f597f989ef36067.png)
项目依赖项:
spring-cloud-starter-oauth2spring-cloud-starter-security
授权服务器配置
Oauth2配置类继承AuthorizationServerConfigurerAdapter,配置OAuth2相关参数
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h2fRlIMe-1640140757732)(images/NPMGPubUBYOfMGnlobrNYUeFq8Y4Bk3vtwdohHGS4TQ.png)]](https://i-blog.csdnimg.cn/blog_migrate/26f6b6e4983d5da9c286025755dbab51.png)
SpringSecurity配置类,继承WebSecurityConfigurerAdapter,实现SpringSecurity权限配置
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zYJrAMYV-1640140757730)(images/01PRSvIPZg9twW1mNL-LOZ31-ZpgPE3UULCZdqAMuyo.png)]](https://i-blog.csdnimg.cn/blog_migrate/4f5282022ddb31942b9f8b4d120eaf1e.png)
资源服务器
OAuth2配置类继承AuthorizationServerConfigurerAdapter

Security配置类继承WebSecurityConfigurerAdapter

HelloController中定义了受限访问的资源

352

被折叠的 条评论
为什么被折叠?



