2021-10-09

第三方登录流程解析(基于oauth2.0)

oauth2解决的问题是你在上网登录一个客户端的时候,可能客户端比较小众,不受你的信任,你不放心把密码安全的交给他,这个时候就可以使用第三方登录来解决问题,通过一个你信任的网站,让客户端通过这个网站来得到你的基本信息,从而避免了密码模式的信息泄露问题。
在这里插入图片描述
这里我们拿百度网盘和qq作为例子,我们的目的是使用qq作为第三方登录百度网盘,总结出以下几个流程:
1)首先,客户端访问百度网盘的登录界面,点击第三方登录。
2)百度网盘重定向到qq服务器,让用户输入账号和密码,除此之外还需要提供clientid,callback之类的参数,这些参数可以看作是担保参数,是需要通过正规渠道申请的,qq就去qq的平台,微信就去微信的平台。
3)qq验证账号密码并且生成tokan响应到百度网盘后重定向到callback
4)百度网盘拿着token去访问qq服务器解析用户的参数,之后得到用户信息。

oauth2

在这里插入图片描述
oauth2的流程如上图所示,前俩步的授权许可呈现出来的形式是以clienid和cilentsecret,callback。。。的形式颁发给客户端的。
oauth2有四个角色:
1.资源所有者(你自己)
2.客户端,第三方(百度网盘)
3.资源服务器(qq的数据库)
4.授权服务器(qq)
下面介绍一种oauth2中用的最多的授权码模式。
在这里插入图片描述
大体流程(以上面的qq百度网盘为例zi)
1)打开百度网盘的登录界面,点击qq登录
2)跳转到qq客户端界面,同时带着特定参数
https://graph.qq.com/oauth2.0/show?which=Login&display=pc&client_id=100312028&response_type=code&redirect_uri=https%3A%2F%2Fpassport.baidu.com%2Fphoenix%2Faccount%2Fafterauth%3Fmkey%3De67c5b007e2e4e3c532978e456cc5fd6a1dca048fa8e4d0197%26tpl%3Dnetdisk&state=1633744521&display=page&scope=get_user_info%2Cadd_share%2Cget_other_info%2Cget_fanslist%2Cget_idollist%2Cadd_idol%2Cget_simple_userinfo
上面是携带的部分参数,
在这里插入图片描述
3)点击确定授权之后,qq向百度网盘提供的callback发送一个信息,包含code=…,state=…,表明已经授权通过了。
4)百度网盘拿着code+clientid+clientsecret去qq获取token
5)qq验证通过之后发放token
6)百度网盘拿着token去获取用户信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值