OAuth2.0 第三方qq登录分析过程

如需转载,标记出处

一、OAuth2.0 流程详细拆解

OAuth2.0 就是让用户授权第三方应用访问自己的数据,但不告诉第三方自己的账号密码的安全机制

 用户授权 (获取 Authorization Code)

你的网站引导用户点击 QQ登录 按钮。

用户跳转到 QQ 登录页面,输入账号密码,并授权。

QQ 登录成功后,把 Authorization Code 发回你的网站(回调地址带着 code)。

 用 Authorization Code 换取 Access Token

·你的网站服务器收到 code 后,携带 code + appid + appsecret 去 QQ 服务器换取 Access Token。

使用 Access Token 获取用户信息

你的网站拿到 Access Token 后,去 QQ 的用户接口获取用户信息+openid。

(可选) 用 Refresh Token 换新 Access Token(续期)

Access Token 有效期一般 60 天左右,过期就不能用了,需要续期。

拿 refresh_token 去换新的 access_token。


二、OAuth2.0 流程总结图

用户授权(Authorization Code)

你的服务器用Code换Token(Access Token)

你的服务器用Token获取用户信息+openid

(Token过期时可用 Refresh Token 续期)

三、问题集

1.OAuth2.0 为什么要Code 和 Token,只用一个不行吗

攻击者可以伪装成客户端浏览器页面,引导用户去授权,拿到code

名字本质作用流程位置
Authorization Code临时授权码**证明用户允许你操作他的QQ账号信息,但它不能直接访问用户数据。需要拿它去换Access Token。登录成功后,临时返回给你
Access Token通行证拿到后,你的网站才可以去调用QQ开放的接口(比如获取用户信息),是实际访问数据的钥匙你网站拿 Code 去换来的

Authorization Code

用户同意授权给你后,QQ给你一张 授权凭证,相当于 "临时纸质通行证",你拿着这个临时证去官方窗口(QQ服务器)换真正的 Access Token。

官方窗口(QQ服务器)确认你没问题,发给你一张 可以开门访问用户数据的钥匙(Token)。

下面是QQ官网文档(仅截取部分信息用来讲解)

你需要包含这两个值才能拿到code

而要拿到token的条件,需要带着下面的几个

多了一个client_secret,就是应用的 "密码",跟你登录网站用的密码一样,是平台(分配给你开发的应用的密钥,用来证明“你是谁”。当你开发一个网站或者App,需要接入第三方平台(比如QQ登录),平台为了识别你,会给你一对:

appid(你是谁)

appsecret(用来验证你说的身份)

只有你的网站服务器持有 client_id 和 client_secret 才能用 Authorization Code 换 Access Token

就算被人拿到Code,他不知道你的appsecret,也拿不到token。Token 本身 是明文返回给你。

但这个明文是在 HTTPS加密隧道 里传输的,外面有一层 SSL/TLS加密,别人无法看到里面的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值