第三方账号登录

224 阅读3分钟

随着国内及国外巨头们的平台开放战略以及移动互联网的发展,第三方登录已经不是一个陌生的产品设计概念了。 所谓的第三方登录,是说基于用户在第三方平台上已有的账号和密码来快速完成己方应用的登录或者注册的功能。而这里的第三方平台,一般是已经拥有大量用户的平台,国外的比如Facebook,Twitter等,国内的比如微博、微信、QQ等。

image.png

第三方登录技术方案 Oauth2认证流程

第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要遵循一定的 接口协议。 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认 证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。互联网很多服务如Open API,很多大公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。 Oauth协议目前发展到2.0版本,1.0版本过于复杂,2.0版本已得到广泛应用。 参考:

baike.baidu.com/item/oAuth/… Oauth协议:tools.ietf.org/html/rfc674…

下边分析一个Oauth2认证的例子,网站使用微信认证的过程:

e01efa3dd69d883c96b668502f4654e9.png

  1. 用户进入网站的登陆界面,点击微信图标以微信账号登陆,该系统,用户是自己在微信里信息的资源拥有者。

e5b168cbc9ff11261928d3de17b4727f.png

点击微信弹出一个二维码,此时用户扫描二维码,开始给网站授权。

efbeb07b88ae353de22f60d0944ddcb0.png 2. 资源拥有者同意给客户端授权

资源拥有者扫描二维码表示资源拥有者同意给客户端授权,微信会对资源拥有者的身份进行验证,验证通过后,微信会询问用户是否给授权网站访问自己的微信数据,用户点击'确认登录"表示同意授权,微信认证服务器会颁发个授权码,并重定向会网站。

f8c1883b0814ce52a31d7b2fc7d05227.png

  1. 客户端获取到授权码,请求认证服务器申请令牌 此过程用户看不到,客户端应用程序请求认证服务器,请求携带授权码。

  2. 认证服务器向客户端响应令牌 认证服务器验证了客户端请求的授权码,如果合法则给客户端颁发令牌,令牌是客户端访问资源的通行证。此交互过程用户看不到,当客户端拿到令牌后,用户在网站看到已经登录成功,

  3. 客户端请求资源服务器的资源 客户端携带令牌访问资源服务器的资源。网站携带令牌请求访问微信服务器获取用户的基本信息

  4. 资源服务器返回受保护资源 资源服务器校验令牌的合法性,如果合法则向用户响应资源信息内容。

注意:资源服务器和认证服务器也可以是统一个服务器,也可以是分开的服务器。如果是分开的服务器通常要求认证服务器来校验令牌的合法性。