幾個介紹OAUth的文章

本我轉自一個牛人的博客:點擊打開鏈接

一、一篇形象的介紹文章:

OAuth從出生似乎得到了太多業界的關照..幾大被牆網站都有OAuth驗證API..

今天在羣裏聊天.有人問我:國內除了豆瓣人人新浪微博.還有哪個提供api了?

我一時語塞..爲國內的環境感到一絲淒涼..

扯遠了..我們今天就來分析一下OAuth..怎麼來用OAuth.

寫這篇文章的原因就是我學習OAuth協議的時候..搜索到一些文章..都是出自一個叫[OAuth開發文檔.docx]的文檔中的..

比較籠統..並且不容易理解..

所以我想我有必要用我自己的話來描述一下OAuth協議.

爲了更好的解釋.我們就用豆瓣來舉例吧.

一個用戶A在豆瓣上註冊了一個賬號. 登錄進去後他可以進行一些動作.比如發佈廣播等.

那麼好.現在有個網站B..想讓A在我的網站上發表一個廣播..

但是有個問題..網站B對於用戶A來說是不可靠的..用戶A不想把自己的賬號密碼放到網站B上..

另外.網站B對於豆瓣來說也是不可靠的..豆瓣不知道網站B是不是真正的用戶A.

爲了解決這個問題..這三個人(豆瓣/用戶A/網站B)就坐一起開了個小會..

會議的結果就是OAuth協議.

這個協議爲了安全看起來是有點複雜的..下面我就簡單的說下步驟..我有些比喻是不恰當的.只是讓大家理解步驟而已.

大的步驟來說有三步.

在這些步驟之前..網站B得去豆瓣申請一個信物1(oauth_consumer_key)和一把鑰匙1(oauth_consumer_secret)(鑰匙很多.這個鑰匙叫做鑰匙1)..算是兩人見面認識一下..然後網站B再去拜訪豆瓣.豆瓣可以認識說:哦.這不是B嗎?

第一步.

網站B拿着鑰匙去跟豆瓣說.hi兄弟.我來了..然後豆瓣說:我只認鑰匙不認人的.掏出來你的信物1(oauth_consumer_key)和鑰匙1(oauth_consumer_secret)我來識別下.

這時候網站B戰戰兢兢的拿出來.. 豆瓣驗證後說: 噢 沒錯. 你就是B. 那好.我再給你另外一把鑰匙2(oauth_token_secret)和信物2(oauth_token)..

網站B就拿着回去了.

第二步.

這時候用戶A就要參與進來了.. 網站B拿着信物2(oauth_token)和鑰匙2(oauth_token_secret)帶着A又來拜訪豆瓣..這時候三個人站一塊..豆瓣先要驗證用戶A是不是真的.

表現到動作上來講就是用戶A需要在豆瓣上登錄一下..如果驗證成功.豆瓣就需要問下用戶A了.

豆瓣說: A啊 你認識那個B嗎? 你讓他動你的東西麼?

A說: 認識認識啊 他是我好兄弟. 我的東西他隨便動..

這時候豆瓣就知道了. 那好..那網站B就可以從我這裏增刪改你的東西了.

另外.網站B還是提供給豆瓣一個後門.. A同意後.豆瓣就要求A用戶拿着鑰匙2去後門找網站B了

第三步.

如果上面都還算順利的話..網站B就拿着鑰匙1(oauth_consumer_secret)跟鑰匙2(oauth_token_secret)再去拜訪豆瓣..

豆瓣再次驗證通過後.就會給網站B一個鑰匙3(oauth_token_secret)和一個信物3(oauth_token)..

這個雖然名字上爲oauth_token.但是我們普遍都叫做oauth_access_token.

這時候對於用戶/豆瓣來說.網站B就可以信任了.

如果以後網站B想要去修改用戶A的內容.需要拿上鑰匙1(oauth_consumer_secret)和鑰匙3(oauth_token_secret)去找豆瓣就可以了.

到此爲止.這個過程就結束了..

上面的步驟大體是這樣的..但是有些細節的不同.比如簽名加密等..

這個就可以從我的代碼中仔細去理解了.

我們可以拿豆瓣的API去測試一下.

獲取access_token的話.如果你喜歡用開源的OAuth庫也可以..我爲了自己理解.所以寫了一個.

拿到access_token後.每次去增刪改東西的時候.都需要把URL secret等都簽名一下..放到header裏面.

當你請求API的時候.比如是發表一個廣播 這個API的URL是http://api.douban.com/miniblog/saying

每次你請求.豆瓣都要check一下這個頭..看看是什麼驗證的..

比如他一看頭裏面是Authorization: OAuth..噢知道了 是OAuth驗證.

這時候他就去檢查那些必要的字段.比如oauth_consumer_key等.

剩下的大家就可以去看OAuth協議 看我的代碼了..

我寫了一個douban的test 你可以去試一下.

你要先去申請一個應用.然後修改config.php中的地址..


二、一個ppt:

http://www.skiyo.cn/2010/09/08/oauth1-0-ppt/


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章