1、为什么需要OAuth?

新浪微博就是你的家。偶尔你会想让一些人(第三方应用)去你的家里帮你做一些事,或取点东西。你可以复制一把钥匙(用户名和密码)给他们,但这里有三个问题:

1)别人拿了钥匙后可以去所有的房间
2)别人拿到你的钥匙后也许会不小心丢到,甚至故意送到它人手里。这样你都不知到谁有你家钥匙。
3)过一段时间你也许会想要回自己的钥匙,但别人不还怎么办?

OAuth 是高级钥匙:

1)你可以配置不同权限的钥匙。有些只能进大厅(读取你的微博流)。有些钥匙可以进储藏柜(读取你的相片)
2)钥匙上带着指纹验证的(指纹 = appkey)。 收到钥匙的人只能自己用,不能转让
3)你可以远程废除之前发出的钥匙

相对来说, OAuth比给出用户名密码安全。

2、OAuth的产生及版本

在OAuth诞生前,Web安全方面的标准协议只有OpenID,不过它关注的是验证,即WHO的问题,而不是授权,即WHAT的问题。好在FlickrAuth和GoogleAuthSub等私有协议在授权方面做了不少有益的尝试,从而为OAuth的诞生奠定了基础。

  • 2007-12 OAuth 1.0发布并迅速成为工业标准。
  • 2008-06 OAuth 1.0 Revision A发布,这是个稍作修改的修订版本,主要修正一个安全方面的漏洞。
  • 2010-04,OAuth 1.0 协议发布为 RFC 5849
  • 2011-05 OAuth 2.0 草案发布
  • 2012-10 OAuth 2.0 协议发布为 RFC 6749
Oauth 1.0, 1.0a是同一个体系的。1.0早期为google工程师设计。他们随后发现这个协议存在session fixation attack。 1.0a修复了这个漏洞。但在使用过程中人们发现开发人员不能很好地实现协议所要求的数字签名。这造成大量的漏洞。于是ietf工作组重新设计了oauth2.0。新协议不再需要数字签名。这个协议和1.0不能兼容。OAuth 1.0 协议过于复杂,易用性差,所以并没有得到普及。

最新文章

  1. Python 修饰符
  2. oracle with as
  3. 东软实训4-JDBC连接数据库
  4. LeetCode——TwoSum
  5. Objective-c 总结(一):OC类的设计
  6. FORM提交请求后自动打开输出EDITOR_PKG.REPORT
  7. 渗透相关website
  8. yum 命令详解
  9. Java的静态代码块是否会在类被加载时自动执行?
  10. LIRe 源代码分析 6:检索(ImageSearcher)[以颜色布局为例]
  11. 2018年,请不要再使用OLE生成EXCEL文件
  12. IDEA 代码风格设置
  13. python 数据库mysql、redis及发送邮件
  14. Python中变量的属性以及判断方法
  15. iOS 在不添加库的情况下 通过抽象类来获取自己想要的方法
  16. JavaScript jQuery 笔记
  17. mongodb 备份脚本
  18. 你曾后悔进入 IT 行业吗?为什么?(转自知乎)--一生不悔入IT
  19. Java中String两种不同创建方式的区别及intern的用法
  20. ffmpeg源码分析二:main函数和transcode函数 (转2)

热门文章

  1. Codeforces Round #269 (Div. 2)-D. MUH and Cube Walls,KMP裸模板拿走!
  2. c# 类如何生成dll文件及引用
  3. [Vijos1067]Warcraft III 守望者的烦恼(DP + 矩阵优化)
  4. [luoguP3178] [HAOI2015]树上操作(dfs序 + 线段树 || 树链剖分)
  5. msp430项目编程32
  6. 用 Gearman 分发 PHP 应用程序的工作负载【转载】
  7. HDU 1114 【DP】
  8. 前端开发数据mock神器 -- xl_mock
  9. 解决java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException
  10. vi下对齐代码的操作