认知OAuth授权基本概念

现在凡是涉及注册登录的网站,为了赚取用户量,都使用了大型社交网站的登陆授权这种方式,因为对于用户来说免除了繁杂、琐碎、重复性的注册行为,进而又可以享受该网站的相应服务,这应该说是双赢的!今天笔记的就是实现该方式的OAuth授权,参考了阮一峰的这篇博文, 《理解OAuth 2.0》

首先引用阮老师博文的一段话,来阐述OAuth的思路:

OAuth在”客户端”与”服务提供商”之间,设置了一个授权层(authorization layer)。”客户端”不能直接登录”服务提供商”,只能登录授权层,以此将用户与客户端区分开来。”客户端”登录授权层所用的令牌(token),与用户的密码不同。用户可以在登录的时候,指定授权层令牌的权限范围和有效期。
“客户端”登录授权层以后,”服务提供商”根据令牌的权限范围和有效期,向”客户端”开放用户储存的资料

思路明确过后,那么对于OAuth的认证流程,我想用自己使用网易云笔记的场景解释一下,因为网上其他地方的描述读起来不太清晰,想来还是用自己的语言组织容易理解一点,以后翻看过来也容易读懂。

场景还原一下就是:当首次使用网易云笔记的时候,我没有去注册而是选择了第三方qq登陆,然后云笔记把我导向了一个qq登陆认证的界面,我输了正确的用户名和密码点击确定过后,随之又跑回并进入了云笔记的主界面,而且在它的右上角显示了我的qq用户名和头像。

然后我们从技术的层面上来解析每一个流程:

  1. 当我想以qq登陆的方式进入云笔记时,云笔记就需要拿我的qq用户名和头像来初始化我这个云笔记新用户。所以,云笔记首先会向服务提供商(这里指qq)申请一个未授权的临时令牌;
  2. qq收到云笔记的请求过后,会去验证云笔记的身份(因为之前云笔记已经向qq申请了诸如appkey之类的东东),验证通过过后,则会将这个未授权的令牌返回给云笔记;
  3. 云笔记拿到这个未授权的令牌后,将用户(这里指我本人)重定向引导到qq的授权页面,即请求用户授权,同时云笔记也将之前得到的未授权的令牌和网站返回地址(后面qq会用它)发给服务提供商;
  4. 当我输入正确的用户名和密码即表示愿意授权云笔记获取我的qq用户名和头像;
  5. 有了我的授权过后,服务提供商才会放心的将已经授权的临时令牌返回给云笔记,并将用户导向第3步中云笔记提供的地址;
  6. 云笔记根据拿到的已经授权的令牌再去请求获取最高级别的访问令牌;
  7. 服务提供商qq会根据云笔记提供的已经授权的临时令牌返回最高级别的访问令牌;
  8. 云笔记根据最高级别的访问令牌去获取服务提供商的相应资源(这里指用户名和头像);
  9. 服务提供商返回资源;

上面的文字看起来太繁杂的话,也可以用下面的这幅流程图加以理解:

总之,云笔记之类的应用程序要想拿服务商的资源,就必须要的到访问令牌,而访问令牌的获取就关键的就是要的到用户的授权。OAuth 2.0定义了四种授权方式。以上介绍的这个授权模式,应该是授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与”服务提供商”的认证服务器进行互动。

好了,写了那么多感觉好累,如果还有什么遗漏或者描述不清楚的地方,以后再来添加笔记吧~