开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):OAuth2介绍】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11459
OAuth2介绍
内容介绍:
一、OAuth2提出的背景
二、开放系统间授权
三、分布式访问(单点登录)
四、OAuth2 2.0误解
扫码支付扫码登录这种方式应该是最常见,因为扫码它可以减少很多的操作,用最少的输入最少的操作让大家能看到更多的功能,这是一种大的方向,微信扫码方式登录,就无形中减少了很多用户操作。
原始方式做登录注册虽然功能实现,但是它需要用户是做很多操作,微信登录先有一个扫描二维码,扫二维码可以做什么功能?
第一扫码人的信息可以自动注册加到数据库中,然后可以自动登录到你的页面中。
这种登陆方式在目前的项目中,这种方式应该是很常见的,微信登录也是目前,很多互联网项目中一个标配性的方式。
首先,讲微信扫码登录之前介绍理论知识 Oauth2,OAuth2解决什么问题,OAuth2是针对特定间题一种解决方案。
一、OAuth2提出的背景
照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服务上的资源。
OAuth2提出背景:
例如 Lucy 拍了很多照片,她将照片存放入百度网盘,并且自己可以进行删除储存修改等操作,网络上存在一种可以打印照片的服务,lucy 想去打印自己在百度网盘上储存的照片。
默认打印照片服务不能直接操作 Lucy 的网盘的,因为该服务没有权限操作她的百度网盘,解决方法就是给打印照片服务授权去读取照片信息,而这个授权就是OAuth2。
二、开放系统间授权
1.方式一∶用户名密码复制
例:Lucy 直接把自己的百度网盘账号和密码提供给打印照片服务,这种方法的缺点是安全性太低,适用于同一公司内部的多个系统,不适用于不受信的第三方应用。
2.方式二︰通用开发者 key
例:打印照片服务和百度网盘之间有一个可以互通的万能钥匙,他们可以互相访问。这种方法在实际当中实用性较低,只适用于合作商或者授信的不同业务部门之间。
3.方式三∶办法令牌
例:百度网盘有打印照片等不同的需求,所以在过程中就创立了一个令牌即字符串,现在某个服务需要去访问百度网盘,百度网盘就颁发这样的一个令牌给该服务,让该服务可以去访问自己。
令牌是有限制的,包括时间限制、权限限制等。接近 OAuth2方式,需要考虑如何管理令牌、颁发令牌、吊销令牌,需要统一的协议,因此就有了 OAuth2协议。 OAuth2就是按照特定的规则颁发一个字符串,然后把字符串颁发给使用者,包括字符串的有效时间、吊销令牌等。
三、分布式访问(单点登录)
比如,一个项目叫在线教育,现在有三个模块,分别是edu模块、vod模块和msm模块,项目用的是微服务架构,用分布式部署把每一个模块部署到独立的服务器上。
但是过程中有问题,在一种的模块进行了登录,登录之后想实现在vod和msm不需要二次登录,或者在这两模块里面可以直接访问。即在一种模块中登录,另外两模块也可以访问,叫单点登录或者分布式访问。
OAuth2解决方案,令牌机制,按照一定规则生成字符串,字符串包含用户信息,
方案:
1、登录成功之后,按照一定规则生威字符串,字符串包含用户信息
2、把生成字符串通过路径传递,或者cookie
3、后面再发送请求时候,每次带着字符串进行发送,获取字符串,从字符串获取用户信息登录
OAuth2只提供解决方案,不规定规则,只提供一个大致方案。
四、OAuth2 2.0误解
1.OAuth 并没有支持HTTP以外的协议。
2.OAuth 并不是一个认证协议 OAuth 并没有定义授权处理机制。
3.OAuth 并没有定义 token 格式 OAuth 2.0并没有定义加密方法。
4.OAuth 2.0并不是单个协议。
5.OAuth2.0仅是授权框架,仅用于授权代理。