Open quinnwencn opened 3 weeks ago
OAuth2.0是一个用于授权的开放标准协议,它提供了认证授权功能,资源拥有者(服务器)可以基于OAuth2.0有效管理第三方对资源的访问。OAuth2.0是OAuth(Open Authorization)的第二个版本,相比第一个版本,它提供了更好的有效性和用户体验。OAuth 1.0在2006年创立,主要解决了用户在使用第三方应用程序时不得不分享密码的问题,但是由于其使用的是签名密钥和令牌交换机制,过程比较复杂。在2012年,OAuth发布了第二个版本,也就是OAuth2.0,2.0版本简化了OAuth1.0的复杂性,采用了基于Bearer Token的授权模式。此外,OAuth2.0还提供了更为灵活的授权模式:授权码模式、隐式授权模式、资源所有者密码凭证模式和客户端凭证模式。
会有人有疑问,我们现在可以用TLS、密码认证等机制做授权保护,为什么还要有OAuth?在传统的CS(Client-Server)模型中,如果客户端要访问服务端的访问限制资源,那就必须要有服务端的凭证(Credentials)。如果有多个客户端,那么服务端就不得不和多个客户端共享访问凭证,同时也引入了一些安全隐患和限制:
在研究OAuth2.0如何解决认证授权问题之前,我们先看一看传统CS模型:
传统的CS模型中,认证和授权可能都发生在服务器端,潜在的问题和限制上面已经列举了。为了解决上述问题,OAuth2.0 引入了一个中间层,把客户端和资源所有者的角色区分开。在OAuth的解决方案中,资源所有者和资源管理者是不同的概念,服务器是资源的管理者,被资源所有者授权对资源进行管理;而客户端必须拥有资源所有者颁发的token才能去资源管理者--服务器那进行资源访问。 客户端获取的token实际上是一个字符串,不再是传统CS架构的credentials。这个字符串包含了访问的范围、token的有效期以及访问的属性等。
什么是OAuth 2.0
OAuth2.0是一个用于授权的开放标准协议,它提供了认证授权功能,资源拥有者(服务器)可以基于OAuth2.0有效管理第三方对资源的访问。OAuth2.0是OAuth(Open Authorization)的第二个版本,相比第一个版本,它提供了更好的有效性和用户体验。OAuth 1.0在2006年创立,主要解决了用户在使用第三方应用程序时不得不分享密码的问题,但是由于其使用的是签名密钥和令牌交换机制,过程比较复杂。在2012年,OAuth发布了第二个版本,也就是OAuth2.0,2.0版本简化了OAuth1.0的复杂性,采用了基于Bearer Token的授权模式。此外,OAuth2.0还提供了更为灵活的授权模式:授权码模式、隐式授权模式、资源所有者密码凭证模式和客户端凭证模式。
为什么要有OAuth
会有人有疑问,我们现在可以用TLS、密码认证等机制做授权保护,为什么还要有OAuth?在传统的CS(Client-Server)模型中,如果客户端要访问服务端的访问限制资源,那就必须要有服务端的凭证(Credentials)。如果有多个客户端,那么服务端就不得不和多个客户端共享访问凭证,同时也引入了一些安全隐患和限制:
OAuth2.0如何实现授权管理
在研究OAuth2.0如何解决认证授权问题之前,我们先看一看传统CS模型:
传统的CS模型中,认证和授权可能都发生在服务器端,潜在的问题和限制上面已经列举了。为了解决上述问题,OAuth2.0 引入了一个中间层,把客户端和资源所有者的角色区分开。在OAuth的解决方案中,资源所有者和资源管理者是不同的概念,服务器是资源的管理者,被资源所有者授权对资源进行管理;而客户端必须拥有资源所有者颁发的token才能去资源管理者--服务器那进行资源访问。 客户端获取的token实际上是一个字符串,不再是传统CS架构的credentials。这个字符串包含了访问的范围、token的有效期以及访问的属性等。