欢迎光临散文网 会员登陆 & 注册

聊一聊微信登录与QQ登录的底层实现

2023-07-17 00:13 作者:懒人Java屈原  | 我要投稿

QQ与微信是我们日常生活中最常用的软件,其他第三方网站我们也能通过QQ与微信进行快捷登录,那么它们的底层原理是怎么样的,又采用了什么技术呢,一起来看看吧。

OAuth2.0简介

我们打开微信登录与QQ登录的开发文档,就能清楚看到,它们都使用了同一个东西叫做OAuth2.0,那么OAuth2.0是什么东东呢?(‧_‧?)

OAuth2.0是一种授权协议,用户授权第三方网站,允许他们访问用户存储在服务器上的信息,而不需要将用户名和密码提供给第三方网站,并可以控制第三方网站能访问的数据范围。

OAuth2.0的角色

1.Resource Owner

可以是个人,也可是一个程序。它们是存储在资源服务器上数据的拥有者。

2.Client

客户端程序,它需要访问被存储在资源服务器上的数据,

3.Authorization Server

认证服务器,它能够给Client进行授权,使Client访问资源服务器上的数据

4.Resource Server

资源服务器,它存储着客户端想要的资源

OAuth2.0的四种授权方式

1.授权码模式(Authorization Code)

该模式需要两次访问认证服务器

第一次:用户进行授权后,客户端程序从认证服务器,拿到Authorization Code

第二次:客户端程序携带Authorization Code从认证服务器兑换成accessToken,后续通过该accessToken进行数据访问,Authorization Code兑换成AccessToken后马上失效。

后续accesstoken过期后,通过refreshToken来获取新的accesstoken,不需要用户再参与。一般accesstoken的生命周期是分钟到小时,而refreshToken的生命周期是天、周甚至月。

这是最安全的一种模式,获取accessToken需要授权码与secret。secret是认证服务器与应用服务器共享的,没有其他人会知道。微信登录、支付宝登录等都是基于这种模式。参照上面的微信登录流程图。

2.隐形授权模式(Implicit)

该模式比上面的授权码模式,少了一个授权码阶段。用户进行授权后,会直接返回accesstoken。

3.密码模式(Resource Owner Credentials Grant Type)

该模式就是通常的输入用户名与密码获取token的一种模式

4.客户端模式(Client Credentials Grant Type)

该模式通常用于后端内部微服务之间的调用,不需要用户的授权,不是用来进行用户校验使用。


聊一聊微信登录与QQ登录的底层实现的评论 (共 条)

分享到微博请遵守国家法律