架构设计(四)之OAuth2

1.OAuth2

OAuth 2.0(/'əu 'ɔːθ/)是一个用于授权的行业标准协议,它是一种协议,而不是指具体的框架。

2.为什么需要 OAuth2?用户密码不行吗?

微信管理了上亿用户,别的公司如果需要通过微信来登录应用,就需要获取微信用户的信息,腾讯不可能把微信内部系统用户名和密码告诉第三方,更不可能把数据库提供出去。
所以,不管是用户密码,还是使用key,都不太好管理,安全性都不高,这个时候需要通过 OAuth2 协议进行资源授权,通过 OAuth2 进行统一管理,颁发,吊销令牌。

3.OAuth2 应用场景
  • 开放系统之间的授权
    在这里插入图片描述
    该模式整体流程为:
  1. 第三方发起微信授权登录请求,微信用户允许授权第三方应用后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据 code 参数。
  2. 通过 code 参数加上 AppID 和 AppSecret 等,通过 API 换取 Access_token。
  3. 通过 access_token 进行接口调用,获取用户基本数据资源或帮助用户实现基本操作。
  • 微服务安全认证
  • 企业系统单点登录
4.OAuth2 的4种授权模式
  1. 授权码模式
  2. 隐码授权模式
  3. 密码模式
  4. 客户端模式
5.OAuth2 运行流程
  1. 客户端请求用户给予授权;
  2. 用户同意给予客户端授权,并返回授权码;
  3. 客户端通过授权码再向认证服务器申请令牌;
  4. 认证服务器对客户端进行认证并返回令牌;
  5. 客户端使用令牌向资源服务器获取资源;
  6. 资源服务器验证令牌,并返回资源;
6.OAuth2 使用什么框架比较好

现在 Spring Security OAuth 项目也不在维护了,把将相关功能集成到了 Spring Security,并且,Spring Authorization Server 项目在2021/08/17 正式上线,所以现在可以通过 Spring Security + Spring Authorization Server 实现 OAuth2 认证。

7.OAuth2 和 JWT 区别

OAuth2 和 JWT 是两种不同的安全协议,两者作用的场景不同。
JWT 的加密 token 包含三段:
在这里插入图片描述
所以,JWT 不仅可以用作安全认证、单点登录,Data 域还可以用来传输数据,比如前后端分离没有 Session 的场合,可以通过 JWT 生成 token 来实现接口安全认证。
而 OAuth2 中的token不包含任何数据,仅用作认证授权,一般在第三方的资源访问授权的比较多,当然 JWT 也能实现,但是 OAuth2 在这方面更标准和广泛使用的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值