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

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)

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值