我理解的OAuth 1.0a 的驗證過程

峻祁連發表於2013-07-04

故事梗概:

淘寶店主糖糖在京郊倉庫存了一批大白兔奶糖,為了防止倉庫鑰匙被偷把倉庫的鑰匙交給了專業的鑰匙保管員公司。 糖糖賣了一斤大白兔需要快遞公司的小迪送貨。快遞員小迪找鑰匙保管公司借鑰匙,然後去京郊倉庫去取貨。

 

出場人物:

快遞公司的小迪 -------OAuth服務的消費者,也就是這個故事的主角

鑰匙保管公司 ------ OAuth 服務提供者

淘寶店主 糖糖 ------- 終端使用者

 

背景:

最近治安一直不好,經常發生被盜事件。小偷也學聰明瞭,直接偷兩塊大白兔不如偷鑰匙,然後拿著鑰匙開著卡車去倉庫堂而皇之的偷。這樣的情況越來越多,大家都開始重視鑰匙的保管了,於是老歐看到了機會,開了一家“老歐鑰匙保管公司”,做了幾年經營的還真不錯,大家不論什麼鑰匙都願意在老歐的鑰匙保管公司儲存。後來為了方便客戶老歐推出了一項租借臨時鑰匙的服務,不過誰要想從他那裡借鑰匙首先得先在他那裡登記,登記好了老歐會給他一個密碼。登記的客戶可以在徵得別人同意的情況下借別人的鑰匙。快遞公司的小迪經常到到別人家倉庫去取貨,肯定早早就在老歐那裡登記了。他的登記資訊是這樣的,並且把他寫在自己的一個特質名片上。

公司名:XiaoDExpress ---- Consumer Key

借到鑰匙後需要做的事:1.在房間裡四處轉轉
                               2.從裡面拿點東西出來

老歐給的密碼: Secret123 --Consumer Secret Key

 

今天的事就這樣開始了。

快遞公司的小迪早上剛上班,就接到了淘寶店主糖糖的電話,說要發兩斤大白兔奶糖給廣州的客人。

 

”鈴鈴鈴。。。。“

小迪:”喂,這裡是快遞公司。“

糖糖:“早啊哥們,剛剛成了一單,給廣州發2斤大白兔。”

小迪說:“貨在哪兒啊?我去取。”

糖糖說:“貨在京郊倉庫呢,鑰匙保管公司的老歐那裡有鑰匙,你找他要吧。”

小迪說:”好嘞,請好兒吧您吶“。

 

於是小迪首先給老歐鑰匙保管公司的接待部(/oauth/request_token)打了個電話,告訴他的公司名(Consumer Key)和老歐當初給他的密碼(Consumer Secret Key),說要臨時借一下糖糖在京郊倉庫的鑰匙。

老歐鑰匙保管公司的接待部根據小迪說的公司名和密碼在賬本上查了查,嗯,沒問題,是小迪打來的電話,他的公司在我這兒登記過,密碼也說對了,於是給了小迪一個小紙條(RequestToken),並告訴他找公司驗證部(oauth/authorize)辦手續。並且告訴小迪抓緊時間,小紙條只在1個小時內有效(Expiration)。

 

小迪拿著他的名片和接待部給的RequestToken找到了驗證部(oauth/authorize)驗證部說:“鑰匙我做不了主,我得先問問鑰匙的主人糖糖。” 於是老歐公司驗證部給糖糖打了電話,老歐公司為了確保是糖糖本人接的電話,要求他說對了鑰匙的特徵(使用者輸入密碼在OAuth 提供者的登入過程)。

老歐公司確定接電話的就是糖糖後告訴他說:“快遞公司的小迪說要接你京郊倉庫的鑰匙,他要進去轉轉,還可能拿點東西出來,你借不借?”

糖糖:”沒事,借給他吧,我們說好了。“

老歐公司驗證部:”好,小迪,糖糖說借給你鑰匙,你拿著這個紙條(oauth_verifier)到公司出納部去領鑰匙吧。不過趕緊去啊,這紙條就今天有效(Expiration)“。

 

快遞公司的小迪拿著自己的名片和驗證部給的小紙條(oauth_verifier)到了出納部(/oauth/access_token),出納部驗證小迪的身份和驗證部給的小紙條後,把糖糖在京郊倉庫的鑰匙給了小迪說:”你現在可以拿著糖糖的鑰匙去他倉庫裡去了,不過要儘快,這是把臨時鑰匙,2天后就不能用了(Expiration)“。

於是,小迪拿著糖糖的臨時鑰匙到了京郊糖糖的倉庫,取了2斤大白兔奶糖發出去了。

 

故事到這兒就算完滿結束了。慶祝!

 

相關文章