OAuth認證

OAuth簡介web

OAuth是在不提供用戶名和密碼的狀況之下,受權第三方應用訪問Web資源的安全協議。安全

OAuth容許用戶提供一個令牌給第三方網站,一個令牌對應一個特定的第三方網站,同時該令牌只能在特定的時間內訪問特定的資源。web安全

好比在FB上想要導入MSN好友,在沒有OAuth時,可能須要用戶向FB提供MSN的用戶名和密碼。網站

OAuth解決了這個信任問題。它使得用戶不須要向FB提供MSN的用戶名和密碼的狀況下,能夠受權MSN將用戶的好友名單提供給FB。.net

OAuth中的角色:視頻

服務商(Server):用戶使用服務的提供方,通常用來存消息、儲照片、視頻、聯繫人、文件等(好比Twitter、Sina等)。blog

用  戶(Resource Owner):服務商的用戶資源

消費方(Client):一般是網站,該網站想要訪問用戶存儲在服務商那裏的信息。get

上面例子裏面,Client是FB,Server是MSN,Resource Owner是用戶。it

另一個實例:

Jane在f.com上有兩張照片,她想要將這兩張照片分享到b.com,這個過程如何實現?

Jane在b.com上選擇要分享的兩張照片.

在b.com的後臺會建立一個臨時憑證,稍後Jane將持此憑證前往f.com.

而後頁面跳轉到f.com的OAuth頁面,並要求Jane登陸。注意,這裏是在f.com上登陸。

登陸成功後,f.com會詢問Jane是否受權b.com訪問Jane在f.com裏面的私有照片。

若是Jane受權成功,f.com會將Jane帶來的臨時憑證標記爲Jane已經受權,同時跳轉回b.com,並帶上臨時憑證(Temporary Credentials),憑此,b.com知道它能夠去獲取Jane的照片了。

 

對於b.com來講,它首先經過Request Token去f.com來換取Access Token,而後就能夠用Access Token訪問資源了。Request Token只能用於獲取用戶的受權,Access Token才能用於訪問用戶的資源。

最終,Jane成功將照片從f.com分享到b.com上。

一個通用的流程:

一、用戶訪問Client網站,想對用戶存放在Server的某些資源進行操做。

二、Client網站向服務商請求一個臨時Token。

三、Server驗證Client網站的身份後,授予一個臨時Token。

四、Client網站得到臨時令牌後,將用戶導向至Server的受權頁面請求用戶受權,而後這個過程當中將臨時Token和Client網站的返回地址發送給Server。

五、用戶在Server的受權頁面上輸入本身的用戶名和密碼,受權Client網站訪問所相應的資源。

六、受權成功後,Server將用戶導向Client網站的返回地址。

七、Client網站根據臨時Token從Server那裏獲取訪問Token。

八、Server根據Token和用戶的受權狀況授予Client網站訪問Token。

九、Client網站使用獲取到的訪問Token訪問存放在Server的對應的用戶資源。

流程圖以下

 中小網站沒有必要本身實現OAuth協議,可使用一些比較成熟的庫。具體的庫能夠查看:http://oauth.net/2/

參考:《白帽子講web安全》

相關文章
相關標籤/搜索