OAuth2

news/2024/10/3 0:22:04

以业界标杆微信开放平台的网站应用微信登录给第三方授权为例,尝试解答这个问题。先看微信提供的交互流程图:

可以看出,当微信用户同意授权给第三方应用时,会把授权临时票据code以重定向的方式返回给用户,用户浏览器重定向到第三方应用(同时携带code),第三方应用拿这个code,再加上自己的appid和app_secret请求微信开放平台,获取到微信开放平台返回的access_token。之后第三方应用去请求微信开放平台的资源,只要带上这个access_token去访问就好了。这里顺便多提一句,这里的appid和app_secret是第三方应用提前向微信开放平台注册备案的。这里的疑问点是为什么用户同意授权后,不直接返回access_token,而是返回code? 可以从以下思路考量:如果想直接返回access_token,那么需要在用户发起确认授权的那个请求里带上第三方应用的appid和app_secret,这样才能换到access_token。但是app_secret是第三方应用的私钥,不能给到用户的,因为非常危险。所以一个理解重点是,要换取access_token的三要素:用户的同意授权+第三方appid+第三方app_secret。当这三个要素都具备后,才可以获取access_token。因为用户是拿不到第三方appid+第三方app_secret,所以是不可能从用户侧直接获取到access_token的。这个access_token一定需要从第三方应用侧获取。上面是以微信开放平台的方案为例讲解,如果我们不采用微信的app_secret机制,只要传appid就能换access_token出来,此时是否安全呢?这样是不是就可以少了换code再换access_token这个流程?

这个方案下,如果授权后直接返回access_token给用户浏览器的,然后重定向到第三方应用,第三方应用存储这个access_token。这个会有什么问题吗?

问题在于,我这个access_token暴露在用户浏览器了(用户前端),这种方式并不安全,会被窃取。如果把access_token放在第三方应用的server侧进行请求,这样就安全多了,要实现这点,就得有一个授权服务器把access_token告诉第三方应用后台的方式。考虑这些方案:

  • 授权服务器主动通知方案。当得到用户授权后,就主动给第三方应用后台发一条消息通知这个access_token,当然这里需要提前注册第三方应用后台的通知的地址。但是即使第三方应用后台拿到这个access_token,他也不知道这个access_token对应的是我平台上的哪个用户。即access_token没法跟第三方平台的用户进行关联。
  • code方案。授权后直接返回code给用户浏览器,并携带code重定向给第三方应用后台。此时第三方后台拿到code后,从JWT或者session_id中解析出用户在第三方应用的uid等信息(因为此时用户处于第三方平台的登录态中),这样code和第三方应用的uid就对应上了,此时拿着code去请求access_token,拿到的access_token就是已知uid的access_token。这样一对比,即使是在无app_secret机制的场景下,code方案也是更为合理的。

链接:https://www.zhihu.com/question/27446826/answer/2916005175

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/55371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Linux权限管理

Linux权限管理 1.Linux权限概述 1.1 rwx概述 Linux权限 含义 r # read 读取,是否可以查看文件内容 w # write 修改,是否可以修改文件内容 x # exec 可执行,一般是给命令或系统脚本使用,运行命令1.2 查看文件,目录权限[root@Kylin-V1…

【找羊加热台】隔热板开槽问题

randyxu 2024-06-23 09:05:59:隔热板的孔能不能改成槽,适应多种孔距的加热板 @randyxu很好的主意:鹿仙子新的300W的孔位听说变成了65-55,这个隔热板是60-53的,我自己画了一个槽。 开槽办法: 最简单的法子就是顶层直接画一条导线,不需要任何网络,线宽设置为槽孔宽度,画…

什么软件可以恢复删除的数据?EasyRecovery恢复数据软件下载

EasyRecovery简介 不小心删除了重要的数据,要怎么恢复呢?一款强大的数据恢复软件EasyRecovery轻松帮你解决。支持多种存储介质:包括硬盘驱动器(HDD/SSD)、光驱、闪存、U 盘、移动硬盘、数码相机、手机等各种存储设备 3。 恢复多种数据类型:能恢复文档(如 Word、Excel、P…

NTC直驱SAR ADC,分压电阻、稳定电容选择

下图在产品电路中非常常见,常见到直接复制粘贴,鲜少问几个为什么,然而在考虑软件的处理上,需要将NTC的非线性处理成线性化,其原因是软件的查表方式,会占用一定的内存资源,且因为电阻的容差,其测量值也不准确。为了让软件更好的处理、测量值更为准确、电路更为通用,所以…

提高SAR ADC精度的外围电路RC元件取值公式推导

此笔记源起于使用ADC直接连接NTC测量温度的扩展,其实之前也记录过ADC前端RC电路元件如何的取值笔记,那时并不太明白,只是根据ADI的视频简单的记录了下计算公式和步骤。 参考一:使用外部组件提高 SAR ADC 精确度 参考二:通过单端 ADC 监测 NTC 热敏电阻电路1. NTC测温电路,…

Python自动复制Excel数据:将各行分别重复指定次数

本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,而不符合要求的那一行则不复制;并将所得结果保存为新的Excel表格文件的方法~本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复…

统信UOS系统常见故障及处理方法

一、系统及软件使用: 统信下载软件方法: 统信系统由于和Windows系统内核不同,不能直接安装互联网上Windows系统的exe文件,需要下载适合系统本身的软件,且互联网上很难找到对应的软件,但统信系统内置了应用商店程序,如需安装软件在“应用商店”下载。点击左下角的启动器,…

四元数

四元数 定义 【四元数的可视化】 https://www.bilibili.com/video/BV1SW411y7W1/?share_source=copy_web&vd_source=ac806c24de13bf5f509bf105a8578e24 \[0.00 + 8.46i + 2.64j + 3.38k\\ \]最左侧实数称为标量部分,右侧\(ijk\)虚部称为向量vector \[i^2+j^2+k^2=1\\ ij=…