Http之Auth的那些事

謹以此文獻給那些需要實現HTTP AUTH的“程序猿”們。

關於HTTP AUTH的文檔不多。

RFC在 http://www.ietf.org/rfc/rfc2617.txt

wiki在 http://en.wikipedia.org/wiki/Basic_access_authentication


使用HTTP AUTH需要在server端配置http auth信息(一般是webserver啓動的時候從配置文件裏面讀取相關信息)。我用中文簡述一下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不失爲一個簡潔的選項。

文章轉自:http://blog.csdn.net/wwwsq/article/details/7255062

感謝博主的無私分享!

發佈了68 篇原創文章 · 獲贊 53 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章