【用戶身份認證】基于表單認證

目前的用戶認證多半是基于表單的認證,基于表單的認證方法并不是在HTTP協(xié)議中定義的。通過讓客戶端向服務器上的Web應用程序發(fā)送登錄信息來實現(xiàn)用戶認證。

鑒于HTTP是無狀態(tài)協(xié)議,之前認證成功的用戶狀態(tài)無法通過協(xié)議層面保存下來(無法實現(xiàn)狀態(tài)管理)。即使該用戶下一次繼續(xù)訪問,也無法將他與其他用戶區(qū)分開來。因此基于表單的認證一般會使用Cookie來管理Session會話。來解決HTTP協(xié)議的狀態(tài)管理問題。

  1. 客戶端把用戶ID和密碼等登錄信息放入報文的實體部分,把請求發(fā)送給服務器(通常以POST方法)。這時會使用HTTPS通信進行登錄信息的發(fā)送。

  2. 服務器生成用以識別用戶的Session ID。對客戶端發(fā)送過來的登錄信息進行身份認證,然后將用戶的認證狀態(tài)與Session ID綁定,記錄在服務器端。然后服務器會在響應報文的首部字段Set-cookie內(nèi)寫入Session ID并返回響應報文。

如果Session ID被第三方盜走,對方就可以偽裝成被盜者的身份進行而已操作。因此必須防止Session ID被盜或被猜出。Session ID通常使用難以推測的字符串,且服務端也要進行會話有效期的管理,保證安全性。

  1. 客戶端接收到服務端發(fā)來的Session ID后,會將其作為Cookie保存在本地。下次向服務器發(fā)送請求時,客戶端會自動在請求報文中加入Cookie。服務端便可以通過驗證接收到的Session ID識別用戶和其認證狀態(tài)。

關(guān)于服務端保存用戶密碼的保存方式,一種方法時先利用給密碼加鹽(salt)的方式增加額外信息,再使用散列(hash)函數(shù)計算出散列值后保存。

鹽(salt):服務器隨機生成的一個字符串(長度足夠長,并且是真正隨機生成的)。又可分別固定鹽和隨機鹽,隨機鹽是根據(jù)一定條件(比如密賬號的創(chuàng)建時間,用戶的賬戶名)隨機生成的,然后將它和密碼字符串連接起來生成散列值。即使兩個用戶使用同一個密碼,由于隨機生成的salt值不同,對應的散列值也是不同的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 網(wǎng)絡(luò)基礎(chǔ)TCP/IP HTTP基于TCP/IP協(xié)議族,HTTP屬于它內(nèi)部的一個子集。 把互聯(lián)網(wǎng)相關(guān)聯(lián)的協(xié)議集...
    yozosann閱讀 3,621評論 0 20
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,694評論 19 139
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,872評論 11 349
  • 【D7/阿爾法號/ 阿基米德艙/任悅穎】 2017年8月17日 {今日任務} 1.收聽晨間導讀 2.閱讀《心理學的...
    穎寶vip閱讀 159評論 0 0
  • 一、基本情況 91年生人,一直到初中畢業(yè),我一直相信著家人說的“你要多吃點,你太瘦了”,且自以為自己是吃不胖的體質(zhì)...
    林小檬閱讀 3,079評論 9 23

友情鏈接更多精彩內(nèi)容