天天看點

HTTP Authorization

POST /goform/ser2netconfigAT HTTP/1.1

Host: 192.168.16.254

Connection: keep-alive

Authorization: Basic YWRtaW46YWRtaW4= //筆者注釋,Authorization: "Basic 使用者名和密碼的base64加密字元串"

Content-Length: 23

uart=9600,8,n,1&save=1

用中文簡述一下http auth的過程:

用戶端發送http請求

伺服器發現配置了http auth,于是檢查request裡面有沒有"Authorization"的http header

如果有,則判斷Authorization裡面的内容是否在使用者清單裡面,Authorization header的典型資料為"Authorization: Basic jdhaHY0=",其中Basic表示基礎認證, jdhaHY0=是base64編碼的"user:passwd"字元串。如果沒有,或者使用者密碼不對,則傳回http code 401頁面給用戶端。

标準的http浏覽器在收到401頁面之後,應該彈出一個對話框讓使用者輸入帳号密碼;并在使用者點确認的時候再次送出請求,這次請求裡面将帶上Authorization header

一次典型的通路場景是:

浏覽器發送http請求(沒有Authorization header)

伺服器端傳回401頁面

浏覽器彈出認證對話框

使用者輸入帳号密碼,并點确認

浏覽器再次發出http請求(帶着Authorization header)

伺服器端認證通過,并傳回頁面

浏覽器顯示頁面

使用http auth的場景不會用cookie,也就是說每次都會送帳号密碼資訊過去。然後我們都知道base64編碼基本上等于明文。這削弱了安全。

由于種種缺點,http auth現在用的并不多。不過在路由器等場合還是有應用的,原因是http auth最簡單,使用起來幾乎是零成本。

在你需要做通路控制,又不想拖上SSO、資料庫之類的東西的時候,http auth不失為一個簡潔的選項。