HTTP超詳細解析 02 基本認證

2021-06-19 03:31:12 字數 1869 閱讀 1788

桌面應用程式也通過http協議跟web伺服器互動, 桌面應用程式一般不會使用cookie, 而是把 "使用者名稱+冒號+密碼"用base64編碼的字串放在http request 中的header authorization中傳送給服務端, 這種方式叫http基本認證(basic authentication)

當瀏覽器訪問使用基本認證的**的時候, 瀏覽器會提示你輸入使用者名稱和密碼,如下圖

假如使用者名稱密碼錯誤的話, 伺服器會返回401 如下圖

第一步:  客戶端傳送http request 給伺服器, 

第二步:  因為request中沒有包含authorization header,  伺服器會返回乙個401 unauthozied 給客戶端,並且在response 的 header "www-authenticate" 中新增資訊。

第三步:客戶端把使用者名稱和密碼用base64編碼後,放在authorization header中傳送給伺服器, 認證成功。

第四步:伺服器將authorization header中的使用者名稱密碼取出,進行驗證, 如果驗證通過,將根據請求,傳送資源給客戶端

使用fiddler inspectors 下的auth 選項卡,可以很方便的看到使用者名稱和密碼:

http基本認證,簡單明瞭。rest api 就是經常使用基本認證的

http協議是無狀態的, 同乙個客戶端對 伺服器的每個請求都要求認證

把 "使用者名稱+冒號+密碼" 用base64編碼後的string雖然用肉眼看不出來, 但用程式很容易解密,上圖可以看到fiddler就直接給解密了。 所以這樣的http request 在網路上,如果用http傳輸是很不安全的。 一般都是會用https傳輸, https是加密的, 所以比較安全.

oauth 對於http來說,就是放在authorization header中的不是使用者名稱密碼, 而是乙個token.

微軟的skydrive 就是使用這樣的方式, 如下圖

除了基本認證(basic authentication), 還有摘要認證 digest authentication, wsse(ws-security)認證

客戶端如果要跟「使用基本認證的**」互動。 非常很簡單,把使用者名稱密碼 加在authorization header中就可以了。 c#

linux下的curl

HTTP 基本認證,摘要認證,擴充套件HTTP認證

http請求報頭 authorization http響應報頭 www authenticate http認證 基於質詢 回應 challenge response 的認證模式。基本認證 basic authentication http1.0提出的認證方法 客戶端對於每乙個realm,通過提供使用...

HTTP基本認證

http提供了乙個原生的質詢 響應框架,簡化了對使用者的認證過程。http的認證模型如圖所示.web伺服器接收到一條http請求報文時,伺服器沒有直接響應請求的資源,而是以乙個 認證質詢 進行響應,要求使用者提供一些保密資訊來說明其身份。使用者再次發起請求時,要附上保密證書 使用者名稱和密碼 如果與...

HTTP基本認證

在最近的專案中,需要實現乙個客戶端,通過http協議訪問web伺服器,即c s架構。使用客戶端的功能前需要先進行登入認證,原本的設計是 客戶端登入成功後,維護乙個cookie用於保持當前的登入狀態。但是最終的做法是,採用了 http基本認證 就是將使用者的使用者名稱和密碼放在http請求頭部的aut...