T31-Day19 Auth2

Oauth2

OAuth2概念

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NGvzqVwb-1640140757710)(images/r9RLAlOG4WP0PmmfoeM3pADKtP4R8b_VCAZgwQ3vsRU.png)]

OAuth2是目前最流行的授权协议,用来授权第三方应用,获取用户数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Y6keHE6-1640140757715)(images/_O-0Pt1YWTm02Vb7VYASnWeR6mrsXElE3mYbpuEdyk0.png)]

令牌和密码的区别
令牌:
  1. 令牌是短期的,会自动失效
  2. 可以撤销,撤销立即生效
  3. 有权限范围,比如只能进 2号门
密码:
  1. 长期有效
  2. 一般不允许他人撤销
  3. 密码一般是完整权限

OAuth2 用来授权协议 java是用spring security auth框架实现

OAuth授权模式
  1. 授权码模式:最完整和严谨的授权模式,第三方平台登录都是此模式,安全性最高
  2. 简化模式:省略授权码阶段,客户端时纯静态页面采用,安全性较高
  3. 密码模式:把用户名密码告诉客户端,对客户端高度信任,比如客户端和认证服务器时同一个公司,安全性一般
  4. 客户端模式:直接以客户端名义申请令牌(很少用),安全性最差

几种Session方案

1.单体架构 cookie session机制

在这里插入图片描述

2.分布式架构方案:session共享
  1. session复制- 节点多的话会出问题
  2. session延连- 如果断开那么无法继续访问,不是高可用
  3. session共享- 目前主流session方案

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q3AsgdAI-1640140757720)(images/a9rPRolmvO7oF3NOxgqF8Fym5fvPvgSuE4Dnxk63xyc.png)]

3.基于token

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WCHW8oXw-1640140757722)(images/JYaF1R1BgCU_DBkLf7WJWGFV8Rnu1uYCa_kWeKzsAmA.png)]

为什么要用OAuth2

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

实战操作

工程结构
  1. 授权服务器:颁发和验证令牌
  2. 资源服务器:提供需要令牌才能访问的服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Ke5FUAc-1640140757725)(images/Ci49dLhgZrVkvRTS4EQAPLPS0hoGV-_fp8G3p1zTt18.png)]

项目依赖项

  1. spring-cloud-starter-oauth2
  2. spring-cloud-starter-security
授权服务器配置

Oauth2配置类继承AuthorizationServerConfigurerAdapter,配置OAuth2相关参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h2fRlIMe-1640140757732)(images/NPMGPubUBYOfMGnlobrNYUeFq8Y4Bk3vtwdohHGS4TQ.png)]

SpringSecurity配置类,继承WebSecurityConfigurerAdapter,实现SpringSecurity权限配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zYJrAMYV-1640140757730)(images/01PRSvIPZg9twW1mNL-LOZ31-ZpgPE3UULCZdqAMuyo.png)]

资源服务器

OAuth2配置类继承AuthorizationServerConfigurerAdapter
在这里插入图片描述

Security配置类继承WebSecurityConfigurerAdapter
在这里插入图片描述

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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值