1. 程式人生 > >圖解HTTP之確認訪問使用者身份的認證(八)

圖解HTTP之確認訪問使用者身份的認證(八)

某些 Web 頁面只想讓特定的人瀏覽,或者乾脆僅本人可見。為達到這個目標,必不可少的就是認證功能。

計算機本身無法判斷坐在顯示器前的使用者的身份。進一步說,也無法確認網路的那頭究竟有誰。可見,為了弄清究竟是誰在訪問伺服器,就得讓對方的客戶端自報家門。

為確認 ueno 本人是否真的具有訪問系統的許可權,就需要核對“登入者本人才知道的資訊”、“登入者本人才會有的資訊”。

核對的資訊通常是指以下這些。

密碼;動態令牌;數字證書;生物認證;IC卡等。

認證

HTTP 使用的認證方式

BASIC認證(基礎認證)HTTP/1.0

BASIC認證步驟

步驟一:請求資源,需要BASIC認證,伺服器返回401;

步驟二:接收到401之後,客戶端將使用者ID和密碼傳送給伺服器,Base64處理“使用者名稱ID:密碼”

步驟三:伺服器端接收到資訊後驗證,返回響應。200或者401

BASIC不安全,用Base64編碼

DIGEST認證(摘要認證)

質詢響應:一開始一方會先發送認證要求給另一方,接著用另一方傳送的質詢碼計算生成響應碼。最後將響應碼返回給對方進行認證的方式。

DIGEST認證步驟

步驟一:請求資源,響應401以及相應欄位。質詢碼nonce

步驟二:接收到401後,響應相應資料,由質詢碼nonce計算

步驟三:驗證資料後響應200/401

SSL 客戶端認證

SSL 客戶端認證是藉由HTTPS的客戶端證書完成認證的方式。憑藉客戶端證書認證,伺服器可確認訪問是否來自已登入的客戶端。

SSL 客戶端認證之前,在客戶端必須安裝相應證書

步驟一:接受請求,返回Certificate Request報文,需要客戶端提供證書

步驟二:使用者選擇證書以後以Client Certificate報文發給伺服器

步驟三:伺服器端驗證通過後,獲取證書內容的公鑰,開始HTTPS加密通訊

SSL客戶端認證證書選擇

SSL客戶端認證採用雙因素認證,即證書認證和表單認證。

基於表單認證

Web頁面,輸入使用者名稱和密碼的登入

一般會使用Cookie來管理Session會話狀態。

表單認證步驟

步驟一:輸入使用者名稱、密碼等以POST方式傳送給伺服器端

步驟二:伺服器端驗證通過後,將狀態以及生成的SessionID繫結記錄後,設定Set-Cookie響應屬性,返回響應

步驟三:客戶端接收後,將SessionID座位Cookie存入本地,下次請求自動傳送該Cookie

為了安全可在Cookie內加入httponly屬性