参考文章:http://www.cnblogs.com/Irving/p/9343377.htmlhtml
1、 OAuth2.0 基础数据库
概念:OAuth2.0 一个受权框架,它容许用户让第三方应用访问该用户在某服务的特定私有资源,可是不提供帐号密码消息给第三方应用浏览器
角色:
安全
受权模式:服务器
Authorization code(受权码模式)框架
标准的 Server 受权模式,很是适合 Server 端的 Web 应用。一旦资源的拥有者受权访问他们的数据以后,他们将会被重定向到 Web 应用并在 URL 的查询参数中附带一个受权码(code)。在客户端里,该 code 用于请求访问令牌(access_token)。而且该令牌交换的过程是两个服务端以前完成的,防止其余人甚至是资源拥有者本人获得该令牌。另外,在该受权模式下能够经过 refresh_token 来刷新令牌以延长访问受权时间,也是最为复杂的一种方式。优化
Implicit Grant(隐式模式)code
该模式是全部受权模式中最简单的一种,并为运行于浏览器中的脚本应用作了优化。当用户访问该应用时,服务端会当即生成一个新的访问令牌(access_token)并经过URL的#hash段传回客户端。这时,客户端就能够利用JavaScript等将其取出而后请求API接口。该模式不须要受权码(code),固然也不会提供refresh token以得到长期访问的入口。server
Resource Owner Password Credentials(密码模式)htm
本身有一套用户体系,这种模式要求用户提供用户名和密码来交换访问令牌(access_token)。该模式仅用于很是值得信任的用户,例如API提供者本人所写的移动应用。虽然用户也要求提供密码,但并不须要存储在设备上。由于初始验证以后,只需将 OAuth 的令牌记录下来便可。若是用户但愿取消受权,由于其真实密码并无被记录,所以无需修改密码就能够当即取消受权。token自己也只是获得有限的受权,所以相比最传统的 username/password 受权,该模式依然更为安全。
Client Credentials(客户端模式)
没有用户的概念,一种基于 APP 的密钥直接进行受权,所以 APP 的权限很是大。它适合像数据库或存储服务器这种对 API 的访问需求。
2、OAuth2.0受权流程
3、Refresh Token流程
刷新的流程如图所示: