OAuth2.0的一些疑问
目录
- 1. 授权码(code)不担心暴露么?
- 2. 图示OAuth完整流程
- 3. 每次第三方登录,都需要重新走第二步的全部流程么?
- 4. OAuth 2.0 CSRF攻击
- 4. OAuth1.0和OAuth2.0区别
- 2.0授权过程
- 1.0授权过程
- 安全性
- 疑问
本文不介绍OAuth,只是记录我对OAuth的一些疑问,对OAuth的学习,建议移步的阮一峰的网络日志-OAuth篇。另外下面OAuth指的都是2.0版本
1. 授权码(code)不担心暴露么?
不担心。该码有效期通常为10分钟,并且与客户端ID和重定向URI,是一一对应关系。另外授权码只能用一次,第二次使用会让使用该授权码获取的token失效,所以攻击者最多会让你出现登录意外失败,但无法获取你的数据
2. 图示OAuth完整流程
app和web的流程是一样的
也可以直接跟第三方平台交互获取token,取决于你们后端是否支持
3. 每次第三方登录,都需要重新走第二步的全部流程么?
假设用户已经获得授权,则下次登录时只需要验证access_token是否有效,无效则重新获取授权,有效则无需重新获得授权。
4. OAuth 2.0 CSRF攻击
正常的授权流程如下
- 李四
登录A网站
,并跳转OAuth提供者B,B授权后将重定向到www.AAAA.com?code=xxxxxxx
- A拿到code后想B请求token,A拿到token后向B请求李四在B上的个人信息,比如unionid
- A在拿到unionid后会将李四在A网站上的uid进行绑定,从而实现李四在B上的账号可以登录A网站
CSRF的流程
- 李四
登录A网站
,并跳转OAuth提供者B,B授权后将重定向到www.AAAA.com?code=xxxxxxx
- 李四拿到这个Code之后不继续想B请求token,而是想办法诱导张三访问
www.AAAA.com?code=xxxxxxx
- 此时A就拿着李四的code去请求token,并获取李四的unionid
- 在进行绑定时就是将李四B账号与张三A账号进行绑定
- 最后李四就可以利用自己的B账号登录张三的A账号,进行为所欲为的操作
- 备注:因为code的时效性,这种攻击需要被攻击者在code有效期内完成
解决方案
- 在第一步传重定向地址的同时传一个state
- 在授权成功进行重定向是B也会将state传给重定向地址
www.AAAA.com?code=xxxxxxx&state=wwwwww
- 在A用code向B获取token前对state做验证,验证不通过就判定是异常请求
state参数值需要具备下面几个特性:
- 不可预测性:足够的随机,使得攻击者难以猜到正确的参数值
- 关联性:state参数值和当前用户会话(user session)是相互关联的
- 唯一性:每个用户,甚至每次请求生成的state参数值都是唯一的
- 时效性:state参数一旦被使用则立即失效
4. OAuth1.0和OAuth2.0区别
2.0授权过程
- 引导用户到授权服务器,请求用户授权,用户授权后返回 授权码(Authorization Code)
- 客户端由授权码到授权服务器换取访问令牌(access token)
- 用访问令牌去访问得到授权的资源
1.0授权过程
- 客户端到授权服务器请求一个授权令牌(request token&secret)
- 引导用户到授权服务器请求授权
- 用授权令牌到授权服务器换取访问令牌(access token&secret)
- 用访问令牌去访问得到授权的资源
安全性
- 1.0的数据传输安全是基于签名,2.0是基于https
- 1.0没有对重定向地址做任何验证也没有做签名,1.0a紧急修复让重定向地址参与签名。2.0取消签名,但授权方会对重定向地址进行校验(开发者会向授权方提交域名)
疑问
- 1.0中即使重定向地址被修改,最多造成用户无法正常完成授权,攻击者在有授权令牌没有appid和appSecret的情况下也做不了什么事情啊,但为什么有些地方说可以攻击方还是可以等到到被攻击者的账号。
OAuth2.0的一些疑问相关推荐
- oauth2 增加token 返回参数_一张图搞定OAuth2.0
公众号:低并发编程(dibingfa) 目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常简 ...
- php oauth2.0 实例,详解laravel passport OAuth2.0的4种模式
参考: 1... 熟悉的场景 某个网站,某用户未注册,注册时提示可微信账号登录(github, google都有类似 某网站是第三方(客户端), 认证服务器和资源服务器都在微信,资源是指微信的用户名, ...
- 一张图搞定OAuth2.0
1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常简单的一件事情,网上一堆神乎其神的讲解,让我不得不写一篇文章来终结它们. 一项新的技术,无非就是了解它是什么,为什 ...
- OAuth2.0 知多少
OAuth2.0 知多少 原文:OAuth2.0 知多少 1. 引言 周末逛简书,看了一篇写的极好的文章,点击大红心点赞,就直接给我跳转到登录界面了,原来点赞是需要登录的. 可是没有我并没有简书账号, ...
- OAuth2.0(基于django2.1.2实现版本)
基于python3.7 0), 你要先对OAuth2.0有一定的了解,建议先读一下阮一峰的oauth2.0文章,直接看"授权码模式"即可,带着疑问再来读本文效果更好. http:/ ...
- 基于OAuth2.0微信网页第三方授权原理
看了阮一峰的OAuth2.0 的文章,主要偏理论 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 和闪客sun 的,整体流程比较详细 htt ...
- OAuth2.0协议(一) - 授权码许可流程
OAuth2.0是什么可以拿来做什么,它只认真的做了一件事授权(Authorization).OAuth2.0是 Open Authorization 2.0的简称,既然是2.0那前面肯定有个1.0. ...
- 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)
---------------------------------------------------------------------------------------------- [版权申明 ...
- 从零开始超详细的Spring Security OAuth2.0实现分布式系统授权(注册中心+网关+认证授权服务(JWT令牌验证)+资源调用服务)
文章目录 一.OAuth2.0 1.介绍 2.例子 3.执行流程 二.Spring Cloud Security OAuth2 1.环境介绍 2.认证流程 三.整合分布式项目 1.技术方案 2.项目结 ...
最新文章
- CABasicAnimation x y z 轴旋转动画
- python pytest allure_python测试框架pytest和测试报告allure的联合使用-----测试套件
- npoi excel 复制行_Excel的格式刷功能你真的会用吗?这样刷更加方便快捷
- Partition分析
- python改变背景颜色_python中绘图时怎么改背景颜色?
- 12.深入分布式缓存:从原理到实践 --- 社交场景架构进化:从数据库到缓存
- windows graphics - DXGI 介绍(DirectX Graphics Infrastructure)
- vue中路由跳转怎样刷新页面保证页面更新
- vue2中vant实现网易云音乐案例-附带所有源码
- [CSS]常见布局技巧
- 基于Highcharts的仪表盘设计
- JSTL 计算时间差
- 事业单位人力资源开发中的职业发展分析
- python脱离pc自动化_Android手机脱离电脑直接运行UIAutomator2
- python-docx中文文档使用小结
- 君子爱财,取之有道!(租房被坑记)
- arm linux驱动 知乎_学习linux驱动开发的方法?
- 蜂鸣器播放《两只老虎》
- 最简单的uefi和legacy介绍和举例(可能吧?)
- saltstack python3安装_安装saltstack
热门文章
- 换热站远程监控系统方案
- error TS2322: Type {} is not assignable to type ‘IntrinsicAttributes IntrinsicClassAttributes
- 如何应用设计模式设计你的足球引擎(第三、四部分)完
- 快速生成HTML5的头部信息,Sublime Text 3如何快速生成HTML5的头部信息和常用的快捷键...
- tim有linux版本的吗,linux tim
- [商鞅] 商鞅的死,说明了什么?
- WinZip 6 for Mac(压缩压解工具)
- som神经网络聚类简单例子_ICML 2020:6篇必读图神经网络(GNN)论文 | 附下载
- uniapp html2canvas 生成图片
- 用php写的亲亲鲜花网站_php在线花卉销售网站系统