第三方接入总结
[TOC]
本文主要讲解OAuth2.0协议和github、微博、QQ三个平台提供的接入流程,介绍nodejs下十分好用的认证授权插件passport.js。本文代码基于nodejs-express。
OAuth2.0介绍
?在说OAuth协议之前,想说一下OpenID。在2005年的夏天,一个开源社区为了解决一个其它现有web身份认证技术不容易解决的问题时,制定了OpenID,OpenID是一个认证(Authentication)协议,这个协议让第三方应用程序在不获取你密码的情况下认证你的身份,OpenID和OAuth是两个经常放在一起比较的web身份认证技术,但OAuth比起OpenID,更像是一个授权(Authorization)协议,是让第三方应用程序在不获取你密码的情况下获取你的授权去对授权提供商或者说是资源提供商请求你授权的资源,拿到OpenID就像给别人指,这栋房子是我的,我可以拿点东西给你看看,而拿到OAuth授权就像你给别人说,这栋房子是我的,这个钥匙给你,但只能开大门不能进卧室,哪些可以动哪些可以开都是你说了算,并且你可以随时方便的收回这把钥匙。
?OAuth2.0是2006年提出来的新一代OAuth版本,比起OAuth1.x,它简化了认证交互过程,增加了认证机制,使用了SSL,去掉了一个叫做客户端token secret的东西,这也导致了OAuth升级需要改动代码,并且没有了1.0版本的安全bug(1.0a修复),这个安全bug主要是回调地址设定方式导致的。
?OAuth2.0协议主要有四个角色,资源所有者即用户,资源服务器,授权服务器和用户代理即客户端,这四个角色主要是完成了这样一个流程,客户端与服务器提供商之前,有一个通过OAuth协议完成的授权服务器,客户端有从服务端获取的唯一ID,客户端不能直接登录服务器提供商,需要先通过用户在授权服务器取得授权码,并且拿着获得用户授权的授权码在授权层换取accessToken,通过这个token向资源服务器请求用户授权信息。

