OAuth2.0 简介

1、OAuth产生背景
  很多网站、APP 没有搭建自己的账号体系,而是直接微信,QQ,微博的这种授权方式登录。
如果需要用户名密码登录网址,app 需要明文保存用户的微博账号和密码,这样很不安全。
一旦网站、APP,被攻击就会导致用户密码泄漏,以及所有使用微信,QQ,微博登录的网站的数据泄漏。
为了解决以上的问题,OAuth 协议应运而生。

2、定义
Oauth是一个授权机制,目的让一个第三方的应用获取到一个http请求的权限,并授予部分资源访问权限。
3、基本原理
Oauth协议提供了4个部分分别是:
1.Resource Owner(资源拥有者:用户) 2.Client (第三方接入平台:请求者) 3.Resource Server (服务器资源:数据中心) 4.Authorization Server (认证服务器)
当client发起请求到资源服务器后,资源服务器会client的ID和redirect_uri提交给资源拥有者同时进行授权。
资源拥有者收到请求后会校验client的ID是否合法,合法就返回一个授权的页面给client.
client点击确认授权后,资源拥有者就会调用授权服务同时生成一个code码。回调给client
client有了code码后就可以用code码去资源拥有者的授权服务中换取token.拿到token后就拿到了用户ID


image.png

下面以processOn登录为例,其实我们在登录processOn的时候可以不需要注册账号密码,因为下面提供了我们qq,google, weibo的第三方登录方式。


.png

当我们使用进行登录的时候,client就是当前的浏览器,资源服务器就是processOn服务器,资源拥有者就是微博,
step1:
在浏览器上点击微博的logo, 这时候processOn就会发送一个请求授权的request给微博服务器,同时带上processOn在微博平台上注册的ID和自己的回调地址。
step2:
微博服务器收到请求后,校验这个ClientID是否合法,如果合法则返回一个自己的登录地址,同时带上processOn的callback地址
setp3:
用户扫描二维码,同意授权登录后,就会发请求给微博服务器,微博服务器收到请求后校验通过,再通过授权服务进行授权并颁发code码,同时跳转到资源服务器
https://www.processon.com/callback?code=2559200ecd7ea433f067a2cf67d6ce6c

step4:
资源服务器拿到这个code后,就可以用code去和微博服务器交换token,拿到token后就得到了uid, 得到uid后再获取用户头像,名称就很容易了,直接call微博服务器就可以了。


image.png

你可能感兴趣的:(OAuth2.0 简介)