Oauth
OAuth协议旨在为用户资源的授权访问提供一个安全,开放的标准。平台厂商通过OAuth协议,提示用户对第三方软件厂商(ISV)进行授权,使得第三方软件厂商能够使用平台商的部分数据,对外提供服务。
目前版本是2.0版。
Oauth设计理念
OAuth在"客户端"与"服务提供商"之间,设置一个授权层(authorization layer)。
“客户端"不能直接登录"服务提供商”,只能登录授权层,以此将用户与客户端区分开来。
"客户端"登录授权层所用的令牌(token),与用户的密码不同。用户可在登录时,指定授权层令牌的权限范围和有效期。与以往的授权方式不同,OAuth协议并不需要触及用户的账户信息(用户名和密码),通过不同类型的token,便可以让平台厂商完成针对第三方应用的用户信息访问授权。
"客户端"登录授权层以后,"服务提供商"根据令牌的权限范围和有效期,向"客户端"开放用户储存的资料。
Oauth授权过程
OAuth的最新版本是OAuth2.0.核心思想是将资源做权限分级和隔离。
- 用户打开客户端,客户端要求用户给予授权。
- 用户同意给予客户端授权。
- 客户端使用上一步获得的授权(一般是Code),向认证服务器申请令牌TOKEN。
- 认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
- 客户端使用令牌,向资源服务器申请获取资源(用户信息等)。
- 资源服务器确认令牌无误,同意向客户端开放资源。
角色
OAuth定义了四个角色:
1.资源所有者
一个能够授权访问受保护资源的实体。当资源所有者是一个人时,它被称为最终用户。
2 资源服务器
托管受保护资源的服务器能够使用访问令牌接受和响应受保护的资源请求。
7. 客户
代表资源所有者及其授权的应用程序进行受保护的资源请求。术语客户端并不意味着任何特定的实现特征(例如,应用程序是在服务器,台式机还是其他设备上执行的)。
8. 授权服务器
服务器在成功认证资源所有者并获得授权后向客户端发放访问令牌。
授权服务器可以是与资源服务器相同的服务器或独立的实体。一个授权服务器可能会发出多个资源服务器接受的访问令牌。
名词解释
(1) Third-party application:第三方应用程序,本文中又称"客户端"(client),即上一节例子中的"云冲印"。
(2)HTTP service:HTTP服务提供商,本文中简称"服务提供商",即上一节例子中的Google。
(3)Resource Owner:资源所有者,本文中又称"用户"(user)。
(4)User Agent:用户代理,本文中就是指浏览器。
(5)Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器。
(6)Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器。