理解OAuth2.0

2015/10/25

名词解释

(1) Third-party application:第三方应用程序,又称客户端(client)
(2) HTTP service: HTTP服务提供商
(3) Resource Owner:资源所有者,又称用户(user)
(4) User Agent:用户代理,即浏览器
(5) Authorization server:认证服务器,即服务提供商专门用来处理认证的服务器
(6) Resource server:资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器

OAuth的思路

OAuth在‘客户端’与‘服务提供商’之间,设置了一个授权层(authroization layer)。‘客户端’不能直接登录‘服务提供商’,只能登录授权层,以此将用户与客户端区分开来。‘客户端’登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。

‘客户端’登录授权层以后,‘服务提供商’根据令牌的权限范围和有效期,向‘客户端’开发用户储存的资料。

运行流程

- 用户打开第三方应用程序,第三方应用程序要求用户给予授权
- 用户用意给第三方应用程序授权
- 第三方应用程序使用上一步得到的授权,向认证服务器申请令牌
- 认证服务器对第三方应用程序进行认证以后,确认无误,同意发放令牌
- 第三方应用程序使用令牌,向资源服务器申请获取资源
- 资源服务器确认令牌无误,同意向客户端开发资源

第三方应用程序的授权模式

OAuth2.0定义了四种授权方式

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials)

授权码模式

通过第三方应用程序的后台服务器,与‘服务提供商’的认证服务器进行互动

- 用户访问第三方应用程序,后者将前者导向认证服务器
- 用户选择是否给予第三方应用程序授权
- 假设用户给予授权,认证服务器将用户导向第三方应用程序事先指定的‘重定向URI’(redirection URI),同时附上一个授权码
- 第三方应用程序收到授权码,附上早先的‘重定向URI’,向认证服务器申请令牌。这一步是在客户端的后台的服务器上完成,对用户不可见
- 认证服务器核对了授权码和重定向URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)

Reference

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html