目录

  • 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攻击

正常的授权流程如下

  1. 李四登录A网站,并跳转OAuth提供者B,B授权后将重定向到www.AAAA.com?code=xxxxxxx
  2. A拿到code后想B请求token,A拿到token后向B请求李四在B上的个人信息,比如unionid
  3. A在拿到unionid后会将李四在A网站上的uid进行绑定,从而实现李四在B上的账号可以登录A网站

CSRF的流程

  1. 李四登录A网站,并跳转OAuth提供者B,B授权后将重定向到www.AAAA.com?code=xxxxxxx
  2. 李四拿到这个Code之后不继续想B请求token,而是想办法诱导张三访问www.AAAA.com?code=xxxxxxx
  3. 此时A就拿着李四的code去请求token,并获取李四的unionid
  4. 在进行绑定时就是将李四B账号与张三A账号进行绑定
  5. 最后李四就可以利用自己的B账号登录张三的A账号,进行为所欲为的操作
  6. 备注:因为code的时效性,这种攻击需要被攻击者在code有效期内完成

解决方案

  1. 在第一步传重定向地址的同时传一个state
  2. 在授权成功进行重定向是B也会将state传给重定向地址www.AAAA.com?code=xxxxxxx&state=wwwwww
  3. 在A用code向B获取token前对state做验证,验证不通过就判定是异常请求

state参数值需要具备下面几个特性:

  1. 不可预测性:足够的随机,使得攻击者难以猜到正确的参数值
  2. 关联性:state参数值和当前用户会话(user session)是相互关联的
  3. 唯一性:每个用户,甚至每次请求生成的state参数值都是唯一的
  4. 时效性:state参数一旦被使用则立即失效

4. OAuth1.0和OAuth2.0区别

2.0授权过程

  1. 引导用户到授权服务器,请求用户授权,用户授权后返回 授权码(Authorization Code)
  2. 客户端由授权码到授权服务器换取访问令牌(access token)
  3. 用访问令牌去访问得到授权的资源

1.0授权过程

  1. 客户端到授权服务器请求一个授权令牌(request token&secret)
  2. 引导用户到授权服务器请求授权
  3. 用授权令牌到授权服务器换取访问令牌(access token&secret)
  4. 用访问令牌去访问得到授权的资源

安全性

  1. 1.0的数据传输安全是基于签名,2.0是基于https
  2. 1.0没有对重定向地址做任何验证也没有做签名,1.0a紧急修复让重定向地址参与签名。2.0取消签名,但授权方会对重定向地址进行校验(开发者会向授权方提交域名)

疑问

  1. 1.0中即使重定向地址被修改,最多造成用户无法正常完成授权,攻击者在有授权令牌没有appid和appSecret的情况下也做不了什么事情啊,但为什么有些地方说可以攻击方还是可以等到到被攻击者的账号。

OAuth2.0的一些疑问相关推荐

  1. oauth2 增加token 返回参数_一张图搞定OAuth2.0

    公众号:低并发编程(dibingfa) 目录 1.引言 2.OAuth2.0是什么 3.OAuth2.0怎么写 1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常简 ...

  2. php oauth2.0 实例,详解laravel passport OAuth2.0的4种模式

    参考: 1... 熟悉的场景 某个网站,某用户未注册,注册时提示可微信账号登录(github, google都有类似 某网站是第三方(客户端), 认证服务器和资源服务器都在微信,资源是指微信的用户名, ...

  3. 一张图搞定OAuth2.0

    1.引言 本篇文章是介绍OAuth2.0中最经典最常用的一种授权模式:授权码模式 非常简单的一件事情,网上一堆神乎其神的讲解,让我不得不写一篇文章来终结它们. 一项新的技术,无非就是了解它是什么,为什 ...

  4. OAuth2.0 知多少

    OAuth2.0 知多少 原文:OAuth2.0 知多少 1. 引言 周末逛简书,看了一篇写的极好的文章,点击大红心点赞,就直接给我跳转到登录界面了,原来点赞是需要登录的. 可是没有我并没有简书账号, ...

  5. OAuth2.0(基于django2.1.2实现版本)

    基于python3.7 0), 你要先对OAuth2.0有一定的了解,建议先读一下阮一峰的oauth2.0文章,直接看"授权码模式"即可,带着疑问再来读本文效果更好. http:/ ...

  6. 基于OAuth2.0微信网页第三方授权原理

    看了阮一峰的OAuth2.0 的文章,主要偏理论 http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 和闪客sun 的,整体流程比较详细 htt ...

  7. OAuth2.0协议(一) - 授权码许可流程

    OAuth2.0是什么可以拿来做什么,它只认真的做了一件事授权(Authorization).OAuth2.0是 Open Authorization 2.0的简称,既然是2.0那前面肯定有个1.0. ...

  8. 新浪微博Oauth2.0授权认证及SDK、API的使用(Android)

    ---------------------------------------------------------------------------------------------- [版权申明 ...

  9. 从零开始超详细的Spring Security OAuth2.0实现分布式系统授权(注册中心+网关+认证授权服务(JWT令牌验证)+资源调用服务)

    文章目录 一.OAuth2.0 1.介绍 2.例子 3.执行流程 二.Spring Cloud Security OAuth2 1.环境介绍 2.认证流程 三.整合分布式项目 1.技术方案 2.项目结 ...

最新文章

  1. CABasicAnimation x y z 轴旋转动画
  2. python pytest allure_python测试框架pytest和测试报告allure的联合使用-----测试套件
  3. npoi excel 复制行_Excel的格式刷功能你真的会用吗?这样刷更加方便快捷
  4. Partition分析
  5. python改变背景颜色_python中绘图时怎么改背景颜色?
  6. 12.深入分布式缓存:从原理到实践 --- 社交场景架构进化:从数据库到缓存
  7. windows graphics - DXGI 介绍(DirectX Graphics Infrastructure)
  8. vue中路由跳转怎样刷新页面保证页面更新
  9. vue2中vant实现网易云音乐案例-附带所有源码
  10. [CSS]常见布局技巧
  11. 基于Highcharts的仪表盘设计
  12. JSTL 计算时间差
  13. 事业单位人力资源开发中的职业发展分析
  14. python脱离pc自动化_Android手机脱离电脑直接运行UIAutomator2
  15. python-docx中文文档使用小结
  16. 君子爱财,取之有道!(租房被坑记)
  17. arm linux驱动 知乎_学习linux驱动开发的方法?
  18. 蜂鸣器播放《两只老虎》
  19. 最简单的uefi和legacy介绍和举例(可能吧?)
  20. saltstack python3安装_安装saltstack

热门文章

  1. 换热站远程监控系统方案
  2. error TS2322: Type {} is not assignable to type ‘IntrinsicAttributes IntrinsicClassAttributes
  3. 如何应用设计模式设计你的足球引擎(第三、四部分)完
  4. 快速生成HTML5的头部信息,Sublime Text 3如何快速生成HTML5的头部信息和常用的快捷键...
  5. tim有linux版本的吗,linux tim
  6. [商鞅] 商鞅的死,说明了什么?
  7. WinZip 6 for Mac(压缩压解工具)
  8. som神经网络聚类简单例子_ICML 2020:6篇必读图神经网络(GNN)论文 | 附下载
  9. uniapp html2canvas 生成图片
  10. 用php写的亲亲鲜花网站_php在线花卉销售网站系统