OAuth基本原理

2021-08-25 03:53:12 字數 1162 閱讀 6196

準備用json+api的方式來做遊味,以減少前後端的耦合。這個思路受啟發於douban的api 。douban api中講到了oauth,於是順便研究了下,看是不是有必要也支援。

oauth的產生背景

如果校內希望去提取使用者的msn好友列表,有一種方法是(的確曾經用過,還記得嗎?):要求使用者在校內的乙個匯入頁面輸入使用者名稱密碼,然後以使用者的角色去訪問msn,獲得列表。該方法存在很大的安全隱患:校內能夠保證不儲存我們的msn密碼麼?鬼才信!

為了解決這個問題,oauth誕生了。

我願意將oauth理解成一種協議,它的思路是:

校內可以用乙個特殊的id號去訪問msn好友列表,並且msn承認這個id號。

現在控制權轉移到了msn。msn在input_password頁面中讓使用者輸入使用者名稱密碼以登陸msn(這是安全的,因為input_password頁面位於msn站點內,校內無法控制)

成功登陸msn後(如果不成功呢?說明非法唄!),msn會對key校內進行簽名得到乙個key_public_msn,然後把這個key_public_msn傳給xiaonei:

從此以後,校內用key_public_msn來訪問msn即可,msn肯定會承認key_public_msn。

以上只是乙個最簡單的思路,真正的oauth認證要略微複雜一些,主要是為了防止攻擊。防攻擊的方式有兩種:

1、附加隨機數。增加猜解難度

2、timestamp。就算猜到,稍後也會過期。

oauth標準提出到現在不到兩年,但取得了很大成功。不僅提供了各種語言的版本庫, 甚至google,yahoo,microsoft等等網際網路大頭都實現了oauth協議。由於oauth的client包有很多,所以我們就沒有必要在 去自己寫,避免重複造輪子,直接拿過來用就行了。[2]

暫時我並沒有打算讓第三方來訪問遊味的資料,所以oauth的支援則不是十分必要了。不過,倒是可以利用oauth來獲得其它**的資料。例如,校內或豆瓣使用者註冊遊味的時候,可以通過oauth來獲取該使用者已有的註冊資訊,直接匯入到遊味即可,免去了使用者註冊的煩惱。

[1]

[2]

mysql的基本原理 Mysql 基本原理

mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...

8 2 1 基本原理

乙個舞台動畫物件在包含許多舞台資訊 出現在何處,佔多大面積,處在什麼角度,是否可見 這些資訊分別儲存在動畫物件的屬性中。在 中讀取這些屬性可以了解物件的位置 大小 角度等狀態資訊 修改這些屬性可以改變物件的位置 大小 角度等狀態。如果從資料的角度去理解,動畫就是在固定時間間隔點不斷修改動畫物件某項屬...

Csocket基本原理

我通過幾個採用 csocket 類編寫並基於 client server 客戶端 服務端 的網路聊天和傳輸檔案的程式 在除錯這些程式的過程中,追蹤深入至 csocket 類核心原始碼 sockcore.cpp 對於csocket 類的執行機制可謂是一覽無遺,並且對於阻塞和非阻塞方式下的 socket...