为什么要有2.0版本?
前面的文章说了OAuth1.0,怎么又突然冒出一个2.0呢?我查阅了一些文档,主要是这些原因:
1. 签名算法太复杂
还记得1.0里面需要对一堆必须的参数排序,编码,然后用secret去签名吧
2. 获取token的方式单一
就一种方式
3. 性能和可伸缩性比较差
由于验证和受保护资源都在一台服务器上。(这个。。。感觉有点牵强,应该也可以分离的)
2.0的改进
针对以上问题,2.0做了以下改进:
1. 角色分离
将认证服务器和资源服务器分开,功能更加清晰,性能和可伸缩性也更好。
2. 去除签名
对,任何签名都不需要了。但必须使用HTTPS安全通道。
3. 多种获取token的方式
a) 认证码授权(Authorization Code Grant
)
1.0的简化版,客户端需要引导用户跳转到授权服务器提供的授权页面,用户输入密码,同意授权,授权服务器返回给客户端认证码,客户端用认证码去验证服务器换取访问码(Access Token)。
流程图,用新浪的:
b) 隐式授权(Implicit Grant)
客户端javascript获得资源的一种方式,一次请求即直接获取token。
c) 用户密码对授权(Resource Owner Password Credentials Grant)
用户在完全信任第三方客户端的情况下,把密码提供给客户端,客户端到认证服务器一次性换取访问码(Access Token)。
还有其他的一些方式了,具体可参考RFC。
4. 访问码(Access Token)过期
2.0里,访问码(Access Token)会有过期时间,但过期之后,客户端可以它换取新的访问码(Access Token),这样设计被认为安全。
总结
2.0版本的OAuth还处于draft阶段,但是有很多公司已经采用了,比如:google, facebook, linkin等,国内比如:新浪微博,腾讯微博。
看来大家还是比较看好的,可能确实1.0太复杂了吧。
参考文章:
1. Introducing OAuth 2.0
2. The OAuth 2.0 Authorization Protocol draft-ietf-oauth-v2-23
分享到:
相关推荐
springboot 集成oauth2.0服务器,基于oauth2.0授权码形式集成
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用...
完整Oauth 2.0 代码实现,包含数据库脚本,使用说明,导入数据库脚本,修改数据库配置可直接运行。
通过点击viewbutton获取用户openid,实现方式oauth2.0认证
Spring Security OAuth2.0学习笔记 什么是认证、授权、会话。 Java Servlet为支持http会话做了哪些事儿。 基于session认证机制的运作流程。 基于token认证机制的运作流程。 理解Spring Security的工作原理,Spring ...
基于Owin中间件的OAuth2.0身份认证,文章位置https://blog.csdn.net/u013938578/article/details/82956188
OAUTH2.0+OpenLDAP技术框架,及适用场景,综合价值等PPT文档,可修改!!!
基于Django2.1.2的OAuth2.0授权登录 大学生课程设计 基于Django2.1.2的OAuth2.0授权登录的课程设计 自己大二写的课程设计
cas3.5.0集成oauth2.0协议,模拟cas3.5.0通过oauth2.0协议与集成了coauth2.0的cas进行模拟通信。可以实现 与新浪微博等第三方身份验证平台对接,实现单点登录。
Oauth2.0,第三方登录鉴权验证教程。
OAuth2.0协议原理与实现
spring security oauth2.0 需要的基础 sql 文件
OAuth2.0协议中文版,方便了解OAuth2.0协议
Oauth2.0协议 整合php框架 客户端 服务端授权码模式小demo
Java的oauth2.0 服务端与客户端的实现源码下载,里面两个maven项目:oauthserver和oauthclient01。
Java的oauth2.0 服务端与客户端的实现.zip 封装了oauth2.0的基本架构和实现,对照我的博客http://blog.csdn.net/jing12062011/article/details/78147306使用该源码。 下载项目压缩包,解压,里面两个maven项目:...
spring security + oauth 2.0 实现单点登录、认证授权,直接贴代码
RFC 6749 OAuth 2.0 授权框架 (正式版中文翻译,PDF)