2014-04-08 136 views
0

我正在開發一個REST系統,並且即將開始開發一種用戶進行身份驗證以便使用該服務的方式。在研究哈希方法之後,我已閱讀WikiPedia - Basic Authentication實現基於REST的身份驗證

但是我有一些關於實現的問題。如果我理解正確,用戶名和密碼將被編碼爲64位併發送到服務器。這是我的困惑所在。

一旦服務器收到這樣的請求,我假設我必須決定base64並根據散列進行檢查。但是,一旦完成,我不明白必須採取什麼措施來驗證用戶是否有將來的請求。

我必須在每次通信時檢查這個base64嗎?我不想將base64保存在服務器上,以防止每次都檢查密碼,因爲這會破壞只有散列密碼的目的。另外,我的服務僅限於SSL,那麼是否有任何缺點將用戶名和密碼作爲身份驗證方式的其餘請求中的參數傳遞,而不是作爲HTTP頭中的參數傳遞?

+0

這是用於Java,.Net,Python,PHP,Perl嗎? –

+0

這是用於Java的。 – User093203920

+1

REST沒有* required/defined *協議的安全性。谷歌,亞馬遜等實施身份驗證的方式不同,您可以通過多種方式來實現。 REST獨立於認證。 –

回答

1

基本身份驗證只是從客戶端通過HTTP向服務器發送用戶名和密碼的標準方式。它沒有定義是否使用底層SSL,或者這是多個調用中的第一個。

我想說的是:你可以決定。

但是,REST意味着無狀態,因此您應該在每次連接到服務器時發送它,而不是創建某種會話。

基本身份驗證優於REST-params的優點是,前者幾乎是每個Web框架(例如Java EE,Spring Security)的一部分。而後者會爲您的所有請求添加額外的參數,並且需要您每次都檢查它。