Basic / Digest HTTP Authentication

Posted by Anthony Chao on 2019-09-23

** Http 認證 Basic / Digest
今天來到這篇的第11章

基礎的 http 認證有 Basic 跟 Digest 兩種

  • Basic HTTP Authentication 的步驟:
  1. 使用者發出 request ,送出使用者帳號跟密碼到伺服器
  2. 使用者判斷使用者帳號跟密碼是否正確來給予需要的資訊或者錯誤訊息
  • Digest HTTP Authentication 的步驟:
  1. 使用者先發送請求給伺服器
  2. 伺服器回應一串亂碼(以下稱為 nonce, number used only once)以及一串代表網域(會是 hash 的格式)的字串,並要求使用者驗證
  3. 使用者回應加密過的帳號 / 密碼 / 網域資訊並且附帶著剛剛伺服器給的 nonce 回去給伺服器
  4. 伺服器根據剛剛的那些資訊是否正確給予需要的資訊或者錯誤訊息

兩個方法的比較

Basic HTTP Authentication 使用 base64 編碼,這並不是加密,因此如果不搭配 SSL 使用的話,等於把你個人資訊暴露在網路世界中,這是非常不安全的做法

至於 Digest HTTP Authentication 的缺點可以從上面步驟看到,每次的 request 都要兩次來回才能得到資訊,因此速度較慢,但當然也相對安全

在 Rails 中要使用這兩種認證方法分別使用的是 http_basic_authenticate_withauthenticate_or_request_with_http_digest 這兩種方法

雖然看到網路上很多資訊,但以目前的能力並不能分辨到底哪些是對哪些是錯,因此只能先做很粗淺的介紹,如果有錯的話也歡迎大家指正喔!

參考資料
Rails Guide

開發者必備知識 - HTTP認證(HTTP Authentication)

StackOverflow





prevent_hack