为什么要有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
分享到:
相关推荐
**OAuth2.0简介** OAuth2.0是一种授权框架,广泛应用于Web API的身份验证和授权。它允许第三方应用在用户授权的情况下,访问该用户的特定资源,而无需获取用户的用户名和密码。OAuth2.0的核心是将认证和授权分离,...
OAuth 2.0 是一种广泛使用的授权框架,它允许第三方应用在用户许可的情况下访问其私有资源。在本文中,我们将深入探讨 OAuth 2.0 的核心概念,并结合 Java 实现来理解其工作原理。 OAuth 2.0 主要分为四个角色:...
OAuth 2.0 协议中文译本共分为九大部分,分别介绍了 OAuth 2.0 协议的背景知识、术语中英对照表、OAuth 2.0 协议的中文译本、OAuth 2.0 协议的工作流程、OAuth 2.0 协议的安全机制、OAuth 2.0 协议的优点、OAuth 2.0...
**OAuth2.0简介** OAuth2.0 是一个授权框架,允许第三方应用在用户许可的情况下,访问其存储在另一服务提供者上的特定信息。这个框架主要用于保护用户数据,避免将用户的用户名和密码直接暴露给第三方应用,提高了...
**OAuth2.0协议概述** OAuth2.0是一种授权框架,允许第三方应用在用户许可的情况下,访问特定资源。它主要用于安全地实现用户数据的共享,比如社交媒体登录、云存储服务等。OAuth2.0的核心是将用户的授权过程与实际...
**基于Django 2.1.2的OAuth2.0授权登录详解** OAuth2.0是一种开放标准,用于授权第三方应用访问用户存储在另一服务提供商(如社交媒体网站)上的私有资源,而无需共享用户的登录凭证。在Django框架中实现OAuth2.0...
OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户无需透露其登录凭证的情况下,获取有限的访问权限去操作用户的资源。这个协议的主要目的是为了解决API的安全访问问题,尤其是在社交媒体、云存储和...
微信OAuth2.0授权是一种广泛应用于移动应用和网站的第三方登录解决方案,主要目的是为了安全地获取用户的微信身份标识——openid,以便提供个性化服务或者与其他微信功能集成。在本文中,我们将详细探讨微信OAuth2.0...
OAuth2.0是一种授权框架,广泛应用于Web应用和API接口的安全访问控制,允许第三方应用在用户许可的情况下,访问其存储在服务提供商上的特定资源。在C#开发环境中,我们可以使用OAuth2.0来实现社交平台如QQ和新浪的...
OAuth2.0是一种广泛使用的授权框架,用于在第三方应用与用户资源之间建立安全的数据共享机制。这个框架允许用户授权第三方应用访问他们存储在特定服务提供商(如Google或Facebook)上的数据,而无需分享他们的登录...
OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户存储在另一服务上的资源,而无需共享用户凭证。在这个Java实现中,我们利用了MAVEN作为项目管理工具和OLTU库来构建OAuth 2.0服务端和客户端。同时,数据...
OAuth2.0是一种广泛使用的开放授权协议,它允许第三方应用在用户许可的情况下访问其存储在另一服务提供商上的私有资源。这个协议的核心是为了解决API的安全访问问题,避免用户直接将用户名和密码提供给第三方应用。...
OAuth2.0是一种广泛应用于各种在线服务的授权框架,它允许第三方应用安全地访问用户的受保护资源,而无需用户直接共享他们的登录凭证。在Java环境中实现OAuth2.0,通常会依赖于一些特定的jar包。这些jar包包含了处理...
这个工具可能还支持 OAuth 2.0 的相关功能,如生成和验证 OAuth 2.0 授权令牌。在使用这个工具之前,需要理解 JWT 和 OAuth 2.0 的基本原理,并按照库的文档或说明进行配置和调用。 总的来说,JWT 和 OAuth 2.0 是...
### OAuth2.0协议原理与实现 #### 一、OAuth2.0协议概述 OAuth2.0协议是一种广泛应用于第三方登录及授权的标准协议。相比于OAuth1.0版本,OAuth2.0进行了多方面的优化和改进,例如简化了授权流程、取消了Token的...
课程讲义所提及的视频资源和文章可以作为学习OAuth 2.0的入门材料,帮助开发者从基础开始深入理解并运用OAuth 2.0授权框架。通过这些材料,开发者可以学习如何为应用程序实现授权流程,以及如何正确使用AccessToken...
OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用...
Spring Security OAuth2.0 是一个强大的安全框架,用于构建安全的Web应用和API。OAuth2.0 是一种授权框架,允许第三方应用在用户许可的情况下访问其受保护的资源,而无需共享用户凭证。本讲义结合代码将深入探讨如何...
OAuth 2.0 是一个授权框架,用于安全地允许第三方应用访问用户的数据,而无需共享用户的登录凭据。在Java中实现OAuth 2.0,我们可以利用Spring Security OAuth2库,它提供了服务端(Authorization Server)和客户端...