2009-09-28 15 views
0

因爲我並不確切地知道任何身份驗證方法是如何工作,我想寫我自己的身份驗證方法。 所以,我想要做的是以下。 客戶端與他的IP一起發送通過HTTPS的用戶名+密碼(或SHA1(用戶名+密碼)) 服務器獲取用戶名+密碼,併產生一個大的隨機數,並將其存儲在 表稱爲標記(在某些數據庫) , 然後它給客戶端確切的數字。 從現在開始,客戶提出的所有請求都伴隨着TOKEN ,如果TOKEN不在表TOKENS中,則任何此類請求都將失敗。 如果用戶在2小時內未提出任何請求,則TOKEN將過期。 如果用戶想要註銷,他向服務器發出請求/ /註銷,服務器 從表TOKENS刪除包含他的令牌的條目,但是只有如果對 '/ logout'的請求來自其IP 。通過HTTP(S)和/或REST與圖書館爲Python和/或C++

也許我重新發明輪子......這不會是很好,所以我的問題是,如果有 一些身份驗證系統已經是這樣工作的,什麼是它的名字,它有任何OSS C++庫或Python庫可用?

我不知道,如果找到這樣的身份驗證系統和配置,將需要更長的時間比 寫我自己,在另一方面,我知道安全是一個微妙的問題,所以我 有些懷疑,我能接近這一寫足夠安全的東西。

另外,有沒有一個很好的OSS C++ HTTP庫?我打算爲Web應用程序編寫一個RESTful Desktop 客戶端。根據可用的庫,我將選擇是否使用C++或Python編寫它 。

回答

0

如果要實現在普通的HTTP這樣的認證系統,你很容易受到重放攻擊。攻擊者可以嗅探SHA1(用戶名+密碼),並在每次他/她想登錄時重新發送。爲了使這種身份驗證系統正常工作,您需要使用nonce

你可能想看看HTTP Digest authentication的提示。

+0

如果他也嗅探nonce,那該怎麼辦? 甚至更​​多...他可以訪問RESTful桌面客戶端,因爲 它將被公開下載。 – xxxxxxx 2009-09-28 09:17:31

+0

另外,維基百科圖 中的虛線水平線是什麼意思?這是否意味着特殊的東西,而不是連續的? – xxxxxxx 2009-09-28 09:19:22

+0

Nonce僅使用一次,這就是爲什麼您不能使用該值重播攻擊。水平線是什麼意思?你的意思是冒號(:)?如果你的意思是,它只是一個冒號:)值由冒號字符':'分隔。 – hrnt 2009-09-28 09:23:51

0

因爲我並不確切地知道任何身份驗證方法是如何工作,我想寫我自己

怎麼可能你曾經寫的東西,你不明白嗎?至少學習一個,每個圖書館的底層概念都是相似的。

Python有repoze.what

0

我會強烈建議OAuth這裏,爲此,許多開源libraries可用。