HTTP請求報頭: Authorization
HTTP響應報頭: WWW-Authenticate
HTTP認證 基於 質詢 /迴應( challenge/response)的認證模式。
基本認證 basic authentication ← HTTP1.0提出的認證方法
客戶端對於每一個realm,通過提供使用者名稱和密碼來進行認證的方式。
包含密碼的明文傳遞
基本認證步驟:
1. 客戶端訪問一個受http基本認證保護的資源。
2. 伺服器返回401狀態,要求客戶端提供使用者名稱和密碼進行認證。
401 Unauthorized
WWW-Authenticate: Basic realm="WallyWorld"
3. 客戶端將輸入的使用者名稱密碼用Base64進行編碼後,採用非加密的明文方式傳送給伺服器。
Authorization: Basic xxxxxxxxxx.
4. 如果認證成功,則返回相應的資源。如果認證失敗,則仍返回401狀態,要求重新進行認證。
特記事項:
1. Http是無狀態的,同一個客戶端對同一個realm內資源的每一個訪問會被要求進行認證。
2. 客戶端通常會快取使用者名稱和密碼,並和authentication realm一起儲存,所以,一般不需要你重新輸入使用者名稱和密碼。
3. 以非加密的明文方式傳輸,雖然轉換成了不易被人直接識別的字串,但是無法防止使用者名稱密碼被惡意盜用。
HTTP的兩個官方的認證協議:基本認證和摘要認證
認證的四個步驟:
請求: 客戶端發起一條請求;第一條請求沒有認證訊息;
質詢: 伺服器對客戶端進行質詢;返回一條401 Unauthorized響應,並在www-Authenticate首部說明如何以及在哪裡進行認證;一般指定對哪個安全域進行認證;
授權:客戶端收到401質詢,彈出對話方塊,詢問使用者名稱和密碼,使用者輸入使用者名稱和密碼後,客戶端會用一個冒號將其連線起來,編碼成“經過擾碼的”Base-64表示形式,然後將其放在Authorization首部中回送;
成功: 伺服器對使用者名稱和密碼進行解碼,驗證它們的正確性,然後用一條HTTP 200 OK報文返回所請求的報文;