HTTP協議之身份認證

HTTP協議之身份認證


需要弄清到底是誰在訪問服務器,確認是否有訪問的權限

身份認證信息
密碼
動態令牌(僅限本人持有的設備內顯示的一次性密碼)
數字證書
生物認證(指紋,虹膜)
IC卡等

常見認證方式
◆BASIC認證(基本認證)
◆DIGEST 認證(摘要認證)
◆SSL 客戶端認證
◆FormBase 認證(基於表單認證)

◆BASIC認證(基本認證)在這裏插入圖片描述在這裏插入圖片描述
這不是加密處理,不需要任何附加信息就可以對BASIC進行解碼,明文解碼之後就是用戶名和密碼,在http等非加密的通信上,如果被竊聽就會被盜,所以他不大常用。

◆DIGEST 認證(摘要認證)
◆什麼是DIGEST認證?
爲彌補BASIC認證存在的弱點,從HTTP/1.1起就有了DIGEST認證。
DIGEST認證同樣使用質詢/響應的方式,但不會像BASIC認證那樣直接發送明文密碼。

一方先發認證要求給另一方,接着使用從另一方面收到的質詢碼生成響應碼
在這裏插入圖片描述

DIGEST認證提供高於BASIC認證的安全等級,但是和https客戶端相比還是很弱,DIGEST提供了密碼被竊聽的保護機制,但是不能防止用戶僞裝,密碼被盜就會不安全,所以適用範圍也有限。

◆SSL 客戶端認證

◆ 從使用用戶ID和密碼的認證方式來講,只要二者的內容正確即可認證是本人的行爲。但是如果用戶ID和密碼被盜,就很有可能被第三者冒充。利用SSL客戶端認證則可以避免該情況的發生。
SSL 客戶端認證是藉由HTTPS的客戶端證書完成認證的方式。憑藉客戶端證書認證, 服務器可確認訪問是否來自已登錄的客戶端。(類似於銀行網銀,要求先輸入用戶名密碼,成功還要下載證書,下載每次登錄會把證書 通過http報文的方式發給服務器開始通信。)
具體步驟如下:
步驟1:接收到需要認證資源的請求,服務器會發送Certificate Request報文,要求客戶端提供客戶端證書。
步驟2:用戶選擇將發送的客戶端證書後,客戶端會把客戶端證書信息以Client Certificate報文方式發送給服務器
步驟3:服務器驗證客戶端證書,驗證通過後方可領取證書內客戶端公開祕鑰,然後開始HTTPS加密通信。
由於使用上的便利性及安全問題,HTTP協議標準提供的BASIC認證和DIGEST認證幾乎都不怎麼使用。另外SSL客戶端認證雖然具有高度的安全等級,但因爲導入及維持費用等問題。還未普及。比如SSH和FTP協議,服務器與客戶端之間的認證是合乎標準規範的,並且滿足了最基本的功能需求上的安全使用級別,因此這些協議的認證可以拿來直接使用。但是對於Web網站的認證功能,能給滿足其安全使用級別的標準規範並不存在,所以只好使用由Web應用程序各自實現基於表單的認證方式。

◆FormBase 認證(基於表單認證)
◆使用最多的驗證
◆使用由Web應用程序各自實現基於表單的認證方式。
◆通過Cookie和Session的方式來保持用戶的狀態。
基於表單的認證方法並不是在HTTP協議中定義的。客**戶端會向服務器上的Web應用程序發送登陸信息(Credential ),按登陸信息的驗證結果認證。**根據Web應用程序的實際安裝,提供的用戶界面及認證方式也各不相同。多數情況下,輸入事先已登錄的用戶ID和密碼登陸信息後,發送給Web應用程序.基於認證結果來決定認證是否成功。

基於表單認證本身是通過服務器端的Web應用,將客戶端發送過來的用戶ID和密碼與之前登陸過的信息做匹配來進行認證的。但鑑於HTTP是無狀態協議,之前已認證成功的用戶狀態無法通過協議層面保存下來。即,無法實現狀態管理,因此即使當該用戶下一次繼續訪問,也無法區分他與其他的用戶。於是我們會使用Cookie來管理Session,以彌補HTTP協議中不存在的狀態管理功能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章