OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OAuth2.0是OAuth协议的延续版本,但不向后兼容OAuth 1.0即完全废止了OAuth1.0
Third-party application
第三方应用程序,又称”客户端”(client),比如打开知乎,使用第三方登录,这时候知乎就是客户端
HTTP service
HTTP服务提供商,简称”服务提供商”,即例子的qq
Resource Owner
资源所有者,又称”用户”(user)即登录用户
User Agent
用户代理,就是指浏览器
Authorization server
认证服务器,即服务提供商专门用来处理认证的服务器
Resource server
资源服务器,即服务提供商存放用户生成的资源的服务器。它与认证服务器,可以是同一台服务器,也可以是不同的服务器
(A)用户打开客户端以后,客户端要求用户给予授权。
(B)用户同意给予客户端授权。
(C)客户端使用上一步获得的授权,向认证服务器申请令牌。
(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
(E)客户端使用令牌,向资源服务器申请获取资源。
(F)资源服务器确认令牌无误,同意向客户端开放资源。
授权码模式(authorization code)
简化模式(implicit)
密码模式(resource owner password credentials)
客户端模式(client credentials)
授权码模式(authorization code)是功能最完整、流程最严密的授权模式。
1)用户访问客户端,后者将前者导向认证服务器,假设用户给予授权,认证服务器将用户导向客户端事先指定的”重定向URI”(redirection URI),同时附上一个授权码
2)客户端收到授权码,附上早先的”重定向URI”,向认证服务器申请令牌。请求成功返回code授权码
3)认证服务器核对授权码和重定向URI,确认无误后向客户端发送访问令牌(access token)和更新令牌(refresh token)