OAuth2是什么?能干什么?

前言

1. OAuth2是什么

OAuth2是什么?能干什么?_第1张图片
简单来说,就是一种授权认证;一种针对开放系统间授权,分布式访问(单点登录)和现代微服务安全的解决方案;这种解决方案为我们提供了一种思路,但具体的实现我们要自己书写(就好比给我们一个接口)
所能解决的问题:开放系统键授权,分布式访问(单点登录)和 现代微服务安全

2. 开放系统间授权

OAuth2是什么?能干什么?_第2张图片
假如Lucy 需要把百度网盘上的图片在网上的某个地方进行打印;这时候该打印的地方是不能直接获取百度网盘上的图片的;因为它没有该访问的权限(即我们所谓的用户名和密码),这时候,该打印的地方需要Lucy给它相关的授权认证。===>OAuth2就是来解决该问题的。
该问题的解决也不是一蹴而就的(它是经过演变而来的)
方式一: 密码和用户名复制
适用于同一公司内部的多个系统,不适用于不受信的第三方应用
OAuth2是什么?能干什么?_第3张图片
这种方法虽然能解决打印图片的问题,但它的安全性可想而知;我们需要把个人信息直接曝光在其他的平台上,这样我们的很多隐私就会暴露,所以这种方式并不可取。
方式二:通用开发者key
适用于合作商或者授信的不同业务部门之间
OAuth2是什么?能干什么?_第4张图片
该方法看上去十分完美,只要我们得到相关的万能钥匙就能访问用户提供的图片,并做打印服务;可这个方案存在一个天然缺陷,我们需要找到百度网盘进行合作;可并非每一个公司都有这个资质的,你是一个刚起步的小公司。假如你向百度发起了合作,很显然成功的概率并不大,所以该解决方案适用的场景也十分狭小了。

方式三:办法令牌
接近OAuth2方式,需要考虑如何管理令牌、颁发令牌、吊销令牌,需要统一的协议,因此就有了OAuth2协议
OAuth2是什么?能干什么?_第5张图片
OAutho2该解决方案完美地解决了用户信息安全性低,与大公司难以协作的问题;发放令牌也就是生成随机的具有特殊含义的字符串,该字符串能访问特定权限的文件。(显然比找大公司合作更方便)

2.分布式访问(单点登录)

单点登录的介绍可参考:单点登录
OAuth2是什么?能干什么?_第6张图片
OAuth2的解决方案:令牌机制,按照一定规则生成字符串,字符串包含用户信息(类似于单点登录中的token解决方案)
这种登录方式就好比我们在edu登录了,其余几个模块也能得到我们的用户信息而不需要再一次登录(类似于我们登录了百度账号,就能在贴吧,文库等地方看到自己的登录信息)
[1] 在一个模块登录成功之后,按照一定规则(可以是JWT)生成,字符串包含用户信息
[2] 把生成字符创通过路径,请求头或者cookie进行传送
[3] 后面发送请求的时候,每次带着字符串进行发送,获取字符串,从字符串中获取用户的登录信息。

3. 现代微服务安全

[1] 传统单块应用的安全
OAuth2是什么?能干什么?_第7张图片
[2] 现代微服务的安全
现代微服务中系统微服务化以及应用的形态和设备类型增多,不能用传统的登录方式
核心的技术不是用户名和密码,而是token,由AuthServer颁发token,用户使用token进行登录
OAuth2是什么?能干什么?_第8张图片

[3] 我们生活中OAuth2应用
OAuth2是什么?能干什么?_第9张图片
[4] OAuth2.0的误解
OAuth2是什么?能干什么?_第10张图片
OAuth2是什么?能干什么?_第11张图片

4. 总结

OAuth2是什么?能干什么?_第12张图片

你可能感兴趣的:(项目Tips)