名词解释
(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)