1. 程式人生 > 其它 >http基本認證

http基本認證

http基本認證

1.客戶端(例如Web瀏覽器):伺服器,請把/family/son.jpg 圖片傳給我。

GET /family/son.jpg  HTTP/1.1

2. 伺服器:客戶端你好,這個資源在安全區family裡,是受限資源,需要基本認證,請帶上你的使用者名稱和密碼再來

HTTP/1.1 401 Authorization Required
www-Authenticate: Basic realm= "family" 

伺服器會返回401,告知客戶端這個資源需要使用基本認證的方式訪問,我們可以看到在 www-Authenticate這個Header裡面 有兩個值,
Basic:說明需要基本認證,realm:說明客戶端需要輸入這個安全區的使用者名稱和密碼,而不是其他區的。因為伺服器可以為不同的安全區設定不同的使用者名稱和密碼。如果伺服器只有一個安全區,那麼所有的基本認證使用者名稱和密碼都是一樣的。

3. 客戶端:伺服器,我已經按照你的要求,攜帶了相應的使用者名稱和密碼資訊了,你看一下
如果客戶端是瀏覽器,那麼此時就會彈出一個彈窗,讓使用者輸入使用者名稱和密碼。
Basic 內容為: 使用者名稱:密碼 的base64形式 。 例如我的使用者名稱為Shusheng007,密碼為ss007 那麼我的Basic的內容為 Shusheng007:ss007 對應的base64 編碼內容U2h1c2hlbmcwMDcldUZGMUFzczAwNw==,如下所示

GET /family/son.jpg  HTTP/1.1 Authorization: Basic
U2h1c2hlbmcwMDcldUZGMUFzczAwNw==


4. 伺服器:客戶端你好,我已經校驗了你的使用者名稱和密碼,是正確的,這是你要的資源。

HTTP/1.1 200 OK Content-type: image/jpg ...

至此這個HTTP事務就結束了。

HTTP 基本認證使用場景

內部網路,或者對安全要求不是很高的網路。現如今HTTP基本認證都是會結合HTTPS一起使用的,https保證網路的安全性,然後基本認證來做客戶端身份識別。

在結合了HTTPS後,Basic Authentication 可以說還是有一定的市場的,但是其重要性正在降低。因為合適的使用場景太少。我們可以想象一下:如果伺服器是允許匿名使用者訪問的,那你就沒有必要認證。如果伺服器是不允許匿名訪問的,那麼需要使用者註冊,就會使用使用者憑證認證,也不需要基本認證。只有那種只需要一個特定密碼就可以訪問的場景,例如加了提取碼的網盤資源。

我們公司移動APP端使用到了基本認證,用來認證某個到我們伺服器的請求是從我們自己的APP發出的,而不是異常來源。