什么是 OAuth
近几年来,很多网站都默默地在自己的登录链接旁边加上了一个“用XXX平台账号登录”的链接,比如
使用第三方平台账号登录,当前平台并不会获取到用户的密码,登录的动作在第三方平台下完成。在登录完成后,会跳出一个页面,由当前平台请求对第三方平台的操作授权。
用户同意之后,一般情况下,当前平台还会要求用户注册一个在当前平台使用的独立账号。
注册成功后,下次用户再进入当前平台时,就可以使用第三方平台账号登录了。登录后,当前平台及第三方平台的账号都会进入在线状态。
OAuth 就是为了提供跨平台访问而产生的一种标准。
OAuth 1.0 的标准在 2007 年发布,2.0 的标准则在 2011 年发布。其中 2.0 的标准取消了 Request token 和所有 Token 的加密过程,但因为强制使用 Https 协议,因此被认为安全性高于 1.0 的标准。
显而易见的是,第三方平台授权有非常大的优点。
首先,用户可以只使用一个社交账号来登录众多平台,这就避免了对于很多非重度使用的平台,注册后忘记用户名和密码的情况。
其次,对于一些小的平台来说,通过 OAuth 授权,可以依托大平台的账号带来用户,对于服务提供方来说,因为账号会在授权双方平台同时在线,也会为己方平台带来可观的流量。
最后,对于用户来说,简化的注册环节以及跨平台访问,则带来了相当多的便利。
OAuth 2.0流程简介
因为 1.0 标准的 OAuth 在流程中有非常多的参数传递以及程序加密步骤。如今各大平台几乎已经全部切换到了 2.0 的授权标准。
上图是 OAuth 2.0 的授权流程。(下文编号与图中编号对应)
- 用户在当前平台发送一个通过第三方登录的请求。
- 当前平台跳转到第三方平台的授权请求 URL,在 Request 中携带当前平台在第三方平台注册的应用 id, 应用 secret 以及回调地址信息。
- 第三方平台在确认 Request 中包含的应用 id, 应用 secret,回调地址与此前注册的一致后,给当前用户提供登录界面。
- 用户在第三方平台完成登录及对当前平台的授权。授权内容通常包括通过当前平台访问第三方平台的用户信息,以及操作第三方平台内容的权限。
- 第三方平台携带验证码回调当前平台。
- 当前平台携带验证码获取 Access token。
- 第三方平台验证码通过,生成 Access token 回传给当前平台。
- 当前平台携带 Access token 访问第三方平台的受保护内容链接。
- 第三方平台返回受保护的内容。
- 当前平台保存受保护的内容。通常会让用户在当前平台注册一个新账号,然后将新账号与第三方平台的账号绑定,绑定过后,用户在当前平台会成功登录。
|