重要术语
Authorization Server:受权服务器,可以成功验证资源拥有者和获取受权,并在此以后分发令牌的服务器;
Resource Server:资源服务器,存储用户的数据资源,可以接受和响应受保护资源请求的服务器;
Client:客户端,获取受权和发送受保护资源请求的第三方应用;
Resource Owner:资源拥有者,可以对受保护资源进行访问许可控制的实体;
Protected Resource:受保护资源,可以使用OAuth请求获取的访问限制性资源;
Authorization Code:受权码;
Refresh Token:刷新令牌;
Access Token:访问令牌。
核心工做流程
OAuth 为客户端提供了一种表明资源拥有者访问受保护资源的方法。在客户端访问受保护资源以前,它必须先从资源拥有者获取受权(访问许可),而后用访问许可交换访问令牌(Access Token,包含许可的做用域、持续时间和其它属性等信息)。客户端经过向资源服务器出示访问令牌来访问受保护资源。访问令牌提供了一个抽象层,将不一样的受权结构(如用户名密码)替换成资源服务器能够理解的单一访问令牌。这种抽象使得分发短时间有效的访问令牌成为可能,也使得资源服务器没必要理解多种多样的受权机制。使用OAuth2.0 机制,进行认证受权,获取访问令牌,并经过访问令牌来访问受保护资源,如图所示:
OAuth2.0 的工做流程简述以下: (1) 客户端从资源拥有者(最终用户)那里请 求受权。受权请求可以直接发送给资源拥有者,或者 间接的经过受权服务器发送请求; (2) 资源拥有者为客户端受权,给客户端发送一个 访问许可(Authorization Code); (3) 客户端出示本身的私有证书(client_id 和 client_secret)和上一步拿到的访问许可,来向受权服务 器请求一个访问令牌; (4) 受权服务器验证客户端的私有证书和访问许 可的有效性,若是验证有效,则向客户端发送一个访 问令牌,访问令牌包括许可的做用域、有效时间和一 些其余属性信息; (5) 客户端出示访问令牌向资源服务器请求 受保护资源; (6) 资源服务器对访问令牌作出响应。