OAuth2.0 里面的 state 参数是干什么的?
OAuth2.0 里面的 state 参数是干什么的?
1.OAuth 2.0 的四种方式
授权码
常见于个人用户第三方登录,比如通过微信、QQ、钉钉登录第三方应用。获取临时的access_token
隐藏式
见于没有后端的web应用
密码式
信任的应用,暴漏密码,由第三方应用去模拟登录
凭证式
常见于应用对应用。分发给应用clientId和clientSecret来实现。
第一种和第四种是较为常见的形式。
2.拿钉钉的第三方应用统一授权来举例
钉钉开发者后台添加应用,为应用分配钉钉登录功能,配置回调地址;为应用分配相应的人员以及通讯录权限。
配置钉钉授权登录地址
详细文档可参考钉钉开发文档
https://login.dingtalk.com/oauth2/auth?
redirect_uri=
&response_type=code
&client_id=
&scope=openid
&state=
&prompt=consent
各个参数的意义:
redirect_uri:就是在开发者后台所填的回调地址
client_id:就是开发者后台的应用标识
state:跟随authCode原样返回。
3.state的意义
回到正体,来说一下state参数的意义。我们可以看到,钉钉开发文档中,说这个参数可以原样返回。如果原样返回,那是不是多此一举呢?那传这个参数的意义是什么呢?
答:是为了防止CSRF 攻击。
啥是CSRF 攻击?(看官们肯定都已经知道了,我这里就是为我自己这个菜鸡做一个笔记)
CSRF(Cross-site request forgery),中文名称:跨站请求伪造你这可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。
那state是怎么防止CSRF攻击的呢?
你是用户a,你此时去访问第三方网站,调起推特的第三方授权登录,点击同意后,跳转到事先配置好的调转地址,也就是第三方网站的相应地址,第三方网站通过code做好获取临时授权码,和你在第三方网站的用户信息做好绑定映射。
以上,是一个正常的第三方登录流程。
但是,第三方网站上的映射关系可能被攻击者利用,问题就出在你在用你的信息登录时,无法保证第三方应用跳转获取临时授权码是同一次。这样你在第三方网站上,你的绑定映射关系就可能关联了别人。
state参数在推特的第三方授权成功后,会通过跳转地址一同返回给第三方网站,第三方网站收到请求后,通过state参数,知道了是哪一个用户的申请,杜绝了上面说到的情况。
更详细可以参考OAuth2.0官方文档关于授权码授权中关于state参数的介绍以及state参数CRSF的介绍
OAuth2.0 里面的 state 参数是干什么的?相关推荐
- codeTyphon7.0里面的cef版本是79.0.10,貌似79.xxx都可以用
codeTyphon7.0里面的cef版本是79.0.10,貌似79.xxx都可以用,81.XXX,实测不能用,提示版本不对.3.XXX的也不行. 下载的时候要注意. 下载地址在pas提示里面 // ...
- oauth2.0里回调地址返回code中如何让code不显示在URL里?
背景: 最近在调用对方提供的oauth2.0接口的时候,返回code在URL显示,但是会影响到本系统调用其他的菜单项的操作,所以想把返回的code值去掉. 解决办法: 想了各种解决办法,目前把 ...
- php jquery validate remote,jquery插件validate里面的remote参数用法
validate验证在进行异步数据库查询验证的过程中用到了remote这个参数 remote里面有url,dataType,data,type等等这几个参数,当data不写的时候默认是当前被验证的字段 ...
- numpy 函数里面的axis参数的含义
前言 numpy支持对矩阵和数组进行运算,因此很多numpy的很多运算都需要指定操作的维数参数axis(当然这些axis都有带默认值的),本博客以numpy.sum求和函数为例,具体分析axis参数不 ...
- laravel里面的validate参数介绍
$this->validate([],[],[],[]); //第一个参数是需要进行验证的数据,第二个参数是规则数组,第三个是对进行验证的数据进行自定义显示需哦无信息,第四个参数是对于错误信息中 ...
- annotation-driven里面的argument-resolvers参数??
2019独角兽企业重金招聘Python工程师标准>>> If you'd like to pass the current Device as an argument to one ...
- Spring Security OAuth2.0认证授权
文章目录 1.基本概念 1.1.什么是认证 1.2 什么是会话 1.3什么是授权 1.4授权的数据模型 1.4 RBAC 1.4.1 基于角色的访问控制 2.基于Session的认证方式 3.整合案例 ...
- 使用Owin中间件搭建OAuth2.0认证授权服务器
前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...
- 天猫精灵智能设备对接(7) OAuth2.0
在开始之前先放两篇参考,一篇英文http://bshaffer.github.io/oauth2-server-php-docs/cookbook/,一篇中文https://www.cnblogs.c ...
最新文章
- oracle级联删除表空间,Oracle表的创建.表空间创建删除,导入导出等
- Okhttp 插入缓存拦截器 解析
- Android 第二十一课 RecyclerView简单的应用之编写“精美”的聊天页面
- 【Python3网络爬虫开发实战】 3.1.3-解析链接
- stm32 断路功能和互补输出
- 华为mysql金融版_华为云数据库MySQL金融版公测,打造满足金融场景数据安全性的高端产品...
- 找到MySQL服务器发生SWAP罪魁祸首
- u-boot 2016.05 添加自己的board 以及config.h uboot移植
- wmv格式转html格式转换器,iPixSoft SWF to HTML5 Converter
- HTML5+CSS3之字体的下载使用
- 被食者与食者系统matlab,捕食者与被捕食者模型——Logistic-Volterra
- 挨踢人生路 记我的10年18家工作经历
- 【EtherCAT从站(SPI)扩展模块电路分析】
- python爬取美女_知乎大神用Python爬取高颜值美女(Python爬虫+人脸检测+颜值检测)...
- 服务器c盘logs文件夹,Win10系统Logs文件夹有什么作用Logs文件夹可以删除吗
- air android 后台运行,AIR Android:使用模拟器运行程序
- JQ实现小写金额转大写
- linux编译.o文件,使用-O0编译Linux内核
- 快速入门丨篇五:如何进行运动控制器输入/输出IO的应用?
- uniapp提示用户开启定位,跳转到开启定位页面