【轉(zhuǎn)】Google OAUTH + OpenID解決方案
同系列文章,轉(zhuǎn)載自 Google OAUTH + OpenID解決方案 , 藍(lán)色字是我加的注解或是著重提示。
?
?????? 在前面已經(jīng)介紹過(guò)OAuth與OpenID,這兩種服務(wù),Google都實(shí)現(xiàn)了。我們可以通過(guò)Google OAuth服務(wù)為Google 用戶(hù)的資源進(jìn)行授權(quán),如用戶(hù)通過(guò)第三方軟件調(diào)用Google Open API操作用戶(hù)的資源時(shí),就需要用戶(hù)對(duì)第三方軟件授權(quán);通過(guò)Google OpenID服務(wù)可以打通Google與其他支持OpenID服務(wù)網(wǎng)站之間的用戶(hù)體系。現(xiàn)在假如有另外一個(gè)網(wǎng)站,也想開(kāi)放自己的Open API服務(wù),但是又不想實(shí)現(xiàn)OAuth服務(wù)(畢竟實(shí)現(xiàn)OAUTH服務(wù)還是需要一些成本的),那該怎么辦?它可不可以使用Google提供的OAuth服 務(wù),授權(quán)認(rèn)證交給Google來(lái)處理?可以!但是OAuth授權(quán)也是基于用戶(hù)登錄來(lái)實(shí)現(xiàn)的,Google OAuth用戶(hù)體系只是Google的用戶(hù)體系,那又怎么辦了?OpenID!對(duì),將網(wǎng)站的用戶(hù)體系與Google用戶(hù)體系打通,并且使用Google OAuth服務(wù)來(lái)實(shí)現(xiàn)授權(quán),即Google提出的OpenID + OAUTH的解決方案。
一、 OAUTH與OpenID
前面兩篇文章對(duì)OAUTH與OpenID均做過(guò)介紹,且Google均提供了這兩種服務(wù),在此我們先簡(jiǎn)要的回顧這兩種服務(wù),具體介紹請(qǐng)參見(jiàn)相關(guān)文章。
OAUTH是一種開(kāi)放的,基于用戶(hù)登錄的授權(quán)認(rèn)證方式。如當(dāng)用戶(hù)使用第三方軟件調(diào)用Google Open API去操作自己的Google服務(wù)資源時(shí),用戶(hù)就要先對(duì)該軟件授權(quán)。授權(quán)過(guò)程中,第三方軟件會(huì)引導(dǎo)用戶(hù)登錄Google,進(jìn)行用戶(hù)鑒權(quán),用戶(hù)通過(guò) Google身份鑒權(quán)后才能對(duì)第三方軟件授權(quán)。顯然,Google OAUTH只能對(duì)Google用戶(hù)進(jìn)行鑒權(quán),其他用戶(hù)體系的用戶(hù)不能直接鑒權(quán)。
OpenID是一種開(kāi)放的,去用戶(hù)中心的,用于打通各網(wǎng)站之間的用戶(hù)體系的服務(wù)。在支持OpenID的網(wǎng)站間,你可以使用任何一個(gè)網(wǎng)站的帳號(hào)或者 Open ID去登錄任何一個(gè)網(wǎng)站。OpenID提供了類(lèi)似單點(diǎn)登錄的用戶(hù)體驗(yàn),并且用戶(hù)無(wú)需在各個(gè)網(wǎng)站上注冊(cè)就可以使用該網(wǎng)站的資源,將用戶(hù)從繁重的帳號(hào)注冊(cè)與管 理工作中解脫出來(lái)。當(dāng)用戶(hù)使用OpenID登錄沒(méi)注冊(cè)的網(wǎng)站過(guò)程中,網(wǎng)站會(huì)引導(dǎo)用戶(hù)登錄OP(用戶(hù)OpenID注冊(cè)的網(wǎng)站),請(qǐng)求OP對(duì)用戶(hù)身份鑒權(quán),用 戶(hù)通過(guò)OP鑒權(quán),網(wǎng)站才會(huì)容許用戶(hù)登錄。
若將OpenID與Google OAUTH結(jié)合,OpenID將第三方網(wǎng)站的用戶(hù)體系與Google用戶(hù)體系打通后,第三方網(wǎng)站便可使用Google OAUTH服務(wù),對(duì)自己的用戶(hù)進(jìn)行授權(quán)!交互示意圖如下圖所示:
二、 Google OAUTH + OpenID解決方案
Google提出了OpenID + OAUTH的解決方案,將兩者揉合在一起,具體流程如下圖所示:
1. Web應(yīng)用請(qǐng)求用戶(hù)登錄;
2. 用戶(hù)選擇使用Google OpenID進(jìn)行登錄;
3. Web應(yīng)用請(qǐng)求發(fā)現(xiàn)Google認(rèn)證服務(wù)URL;
4. Google向Web應(yīng)用返回XRDS信息,其中包含Google認(rèn)證服務(wù)URL;
5. Web應(yīng)用請(qǐng)求用戶(hù)登錄Google服務(wù),通過(guò)請(qǐng)求用戶(hù)授權(quán);
6. Google引導(dǎo)用戶(hù)登錄;
7. 用戶(hù)輸入用戶(hù)名密碼進(jìn)行登錄,同時(shí)確認(rèn)是否對(duì)第三方軟件授權(quán);
8. Google認(rèn)證中心返回用戶(hù)ID與授權(quán)的Request Token給Web應(yīng)用;
9. 用戶(hù)可以訪問(wèn)受保護(hù)的資源,同時(shí)可以繼續(xù)第七部中Oauth認(rèn)證余下的環(huán)節(jié);
從上面的流程第五步可以看出,Google解決方案中,將OAUTH與OpenID的登錄操作合并在一起、并且在登錄的同時(shí)向Google發(fā)送 Oauth請(qǐng)求,請(qǐng)求用戶(hù)授權(quán)。這樣一來(lái),在第五步中,用戶(hù)登錄Google(OpenID中Google對(duì)用戶(hù)鑒權(quán)),同時(shí)請(qǐng)求對(duì)用戶(hù)授權(quán)(OAUTH 中對(duì)用戶(hù)授權(quán),同時(shí)無(wú)需再次登陸,因?yàn)榍懊鍻penID已經(jīng)登錄過(guò)了)。
三、Google OAUTH+OpenID Demo
Google提供了OAUTH + OpenID的DEMO,Demo演示地址如下: http://googlecodesamples.com/hybrid/
剛開(kāi)始,用戶(hù)既沒(méi)OpenID登錄也沒(méi)OAUTH授權(quán),如下圖所示:
接著,點(diǎn)擊上圖中l(wèi)ogin按鈕請(qǐng)求以Google提供的OpenID登錄,如下圖所示:
輸入用戶(hù)名與密碼登錄后,Google提醒您即將登陸到外部網(wǎng)站,外部網(wǎng)站申請(qǐng)對(duì)您的資源進(jìn)行授權(quán),您是否同意,如下圖所示:
點(diǎn)擊繼續(xù)登錄后,登錄成功,并且返回授權(quán)的Token,如下圖所示:
?
參見(jiàn):
http://ig2net.info/archives/765.html
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

