OAuth 2.0

OAuth 2.0简介

OAuth是一种开放协议, 允许用户让第三方应用以安全且标准的方式获取该用户在某一网站,移动或者桌面应用上存储的秘密的资源(如用户个人信息,照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth 2.0角色

  • Resource Owner: 资源所有者
  • Resource Server: 资源服务器
  • Client: 客户端
  • Authorization Server: 授权服务器

OAuth 2.0流程图

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

(A) 客户端向资源所有者请求授权。
(B) 客户端收到授权许可,资源所有者给客户端颁发授权许可(比如授权码code)。
(C) 客户端与授权服务器进行身份认证并出示授权许可(比如授权码code)请求访问令牌。
(D) 授权服务器验证客户端身份并验证授权许可,若有效则颁发访问令牌(accept token)。
(E) 客户端从资源服务器请求受保护资源并出示访问令牌(accept token)进行身份验证。
(F) 资源服务器验证访问令牌(accept token),若有效则满足该请求。

References

The OAuth 2.0 Authorization Framework

理解OAuth 2.0