OAuth認證


OAuth簡介

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

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

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

OAuth解決了這個信任問題。它使得用戶不需要向FB提供MSN的用戶名和密碼的情況下,可以授權MSN將用戶的好友名單提供給FB。

OAuth中的角色:

服務商(Server):用戶使用服務的提供方,一般用來存消息、儲照片、視頻、聯系人、文件等(比如Twitter、Sina等)。

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

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

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

另外一個實例:

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上。

一個通用的流程:

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

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

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

4、Client網站獲得臨時令牌后,將用戶導向至Server的授權頁面請求用戶授權,然后這個過程中將臨時Token和Client網站的返回地址發送給Server。

5、用戶在Server的授權頁面上輸入自己的用戶名和密碼,授權Client網站訪問所相應的資源。

6、授權成功后,Server將用戶導向Client網站的返回地址。

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

8、Server根據Token和用戶的授權情況授予Client網站訪問Token。

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

流程圖如下

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM