1. 程式人生 > 實用技巧 >HTTP確認訪問使用者身份的認證

HTTP確認訪問使用者身份的認證

一、何為認證

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

  1. 密碼:只有本人才會知道的字串資訊
  2. 動態令牌:僅限本人持有的裝置內顯示的一次性密碼
  3. 數字證書:僅限本人(終端)持有的資訊
  4. 生物認證:指紋和虹膜等本人的生理資訊
  5. IC 卡等:僅限本人持有的資訊。

HTTP 使用的認證方式:

  1. BASIC 認證(基本認證)
  2. DIGEST 認證(摘要認證)
  3. SSL 客戶端認證
  4. FormBase 認證(基於表單認證)

基於表單認證的標準規範尚未有定論,一般會使用 Cookie 來管理Session(會話)

三、基於HTTP的追加功能和協議

3.1 若想在現有 Web 實現所需的功能,以下這些 HTTP 標準就會成為瓶頸。

1. 一條連線上只可傳送一個請求
2. 請求只能從客戶端開始。客戶端不可以接收除響應以外的指令
3. 請求 / 響應首部未經壓縮就傳送。首部資訊越多延遲越大
4. 傳送冗長的首部。每次互相傳送相同的首部造成的浪費較多。
5. 可任意選擇資料壓縮格式。非強制壓縮傳送。

Ajax 的解決方法:
1. 由於它只更新一部分頁面,響應中傳輸的資料量會因此而減少,這一優點顯而易見
2.而利用 Ajax 實時地從伺服器獲取內容,有可能會導致大量請求產生。
3.另外,Ajax 仍未解決 HTTP 協議本身存在的問題

Comet 的解決方法:
1. 務器端接收到請求,在處理完畢後就會立即返回響應,
但為了實現推送功能,Comet 會先將響應置於掛起狀態,當伺服器端有內容更新時,再返回該響應

2. 一次連線的持續時間也變長了。期間,為了維持連線會消耗更多的資源。
3. 另外,Comet也仍未解決 HTTP 協議本身存在的問題。




3.2 使用瀏覽器進行全雙工通訊的WebSocket

利用 Ajax 和 Comet 技術進行通訊可以提升 Web 的瀏覽速度。但問題在於通訊若使用 HTTP 協議,就無法徹底解決瓶頸問題。WebSocket網路技術正是為解決這些問題而實現的一套新協議及 API。

當時籌劃將 WebSocket 作為 HTML5 標準的一部分,而現在它卻逐漸變成了獨立的協議標準。WebSocket 通訊協議在 2011 年 12 月 11 日,被 RFC 6455 - The WebSocket Protocol 定為標準

一旦 Web 伺服器與客戶端之間建立起 WebSocket 協議的通訊連線,之後所有的通訊都依靠這個專用協議進行。通訊過程中可互相傳送JSON、XML、HTML 或圖片等任意格式的資料

由於是建立在 HTTP 基礎上的協議,因此連線的發起方仍是客戶端,而一旦確立 WebSocket 通訊連線,不論伺服器還是客戶端,任意一方都可直接向對方傳送報文

WebSocket 協議特點
1. 推送功能
2. 減少通訊量

更多參考https://www.ruanyifeng.com/blog/2017/05/websocket.html