第三方接入總結(jié)

[TOC]

本文主要講解OAuth2.0協(xié)議和github、微博、QQ三個平臺提供的接入流程,介紹nodejs下十分好用的認(rèn)證授權(quán)插件passport.js。本文代碼基于nodejs-express。

OAuth2.0介紹

?在說OAuth協(xié)議之前,想說一下OpenID。在2005年的夏天,一個開源社區(qū)為了解決一個其它現(xiàn)有web身份認(rèn)證技術(shù)不容易解決的問題時,制定了OpenID,OpenID是一個認(rèn)證(Authentication)協(xié)議,這個協(xié)議讓第三方應(yīng)用程序在不獲取你密碼的情況下認(rèn)證你的身份,OpenID和OAuth是兩個經(jīng)常放在一起比較的web身份認(rèn)證技術(shù),但OAuth比起OpenID,更像是一個授權(quán)(Authorization)協(xié)議,是讓第三方應(yīng)用程序在不獲取你密碼的情況下獲取你的授權(quán)去對授權(quán)提供商或者說是資源提供商請求你授權(quán)的資源,拿到OpenID就像給別人指,這棟房子是我的,我可以拿點東西給你看看,而拿到OAuth授權(quán)就像你給別人說,這棟房子是我的,這個鑰匙給你,但只能開大門不能進(jìn)臥室,哪些可以動哪些可以開都是你說了算,并且你可以隨時方便的收回這把鑰匙。

?OAuth2.0是2006年提出來的新一代OAuth版本,比起OAuth1.x,它簡化了認(rèn)證交互過程,增加了認(rèn)證機制,使用了SSL,去掉了一個叫做客戶端token secret的東西,這也導(dǎo)致了OAuth升級需要改動代碼,并且沒有了1.0版本的安全bug(1.0a修復(fù)),這個安全bug主要是回調(diào)地址設(shè)定方式導(dǎo)致的。

?OAuth2.0協(xié)議主要有四個角色,資源所有者即用戶,資源服務(wù)器,授權(quán)服務(wù)器和用戶代理即客戶端,這四個角色主要是完成了這樣一個流程,客戶端與服務(wù)器提供商之前,有一個通過OAuth協(xié)議完成的授權(quán)服務(wù)器,客戶端有從服務(wù)端獲取的唯一ID,客戶端不能直接登錄服務(wù)器提供商,需要先通過用戶在授權(quán)服務(wù)器取得授權(quán)碼,并且拿著獲得用戶授權(quán)的授權(quán)碼在授權(quán)層換取accessToken,通過這個token向資源服務(wù)器請求用戶授權(quán)信息。

網(wǎng)友評論