身份認證系統(一)單WEB應用的身份認證

2022-06-17 04:00:21 字數 1312 閱讀 4480

身份認證技術,也就是所謂的登入功能,是現代web系統最常見的功能之一。本系列文章就試圖為大家詳細的介紹身份認證技術。

basic認證模式是較早被廣泛應用的一種http標準提供的認證模式。最常見的形式之一就是在url中直接寫上使用者名稱密碼向伺服器提供身份:

在basic模式之中,每次向伺服器請求受保護資源的時候都要在url中帶上明文或僅被base64編碼過的使用者名稱密碼。而且在這種模式下,如果我們要實現「記住登入狀態」功能,就需要將使用者名稱密碼這樣的敏感資訊直接換存在瀏覽器中。這樣就形成了它最主要的兩個缺點:

1、每個請求中都要帶有使用者名稱和密碼憑據

2、安全性堪憂

為了解決每次請求敏感資源都要帶有使用者名稱密碼憑證的問題,web開發者們形成了一套基本的實踐模式,就是將使用者認證後的身份儲存於服務端管理的會話(session)之中,以此來減少使用過程中對憑據的傳輸。

使用者想要請求受保護資源,先要登入,想服務端傳送使用者名稱密碼。服務端驗證使用者名稱密碼成功之後將使用者的身份驗證標識儲存在session 中,然後將sessionid儲存在cookie 中。之後當客戶再去請求受保護資源的時候,只要攜帶好cookie中的sessionid就可以驗證其身份返回敏感資料了。

這種基於session的認證模式猶豫其簡單、方便、好用,所以被廣泛使用。但是隨著web應用的發展,其也出現了諸多不足:

1、當伺服器應用重啟時,使用者會被強制登出

2、當站點用負載均衡部署多份時,每個站點例項的session無法共享

當然,我們可以使用單獨的session儲存服務來解決這些問題,但這樣會增加系統不小的複雜性與維護成本。

既然使用session會產生諸多的問題,那我們是不是可以有一種類似的方案來解決這種問題呢?答案肯定是有的,那就是將認證資訊直接儲存在客戶端的cookie中。

但是存在客戶端就會面臨著一系列的安全問題,例如,我直接在cookie中以使用者id儲存標識,那是不是使用者自己篡改cookie改稱別的使用者id就可以切換自己的身份了呢?因此這就要涉及到cookie資訊加密和解密。

除了加密與解密以外還有現在常用的一種解決方案:就是儲存票據(ticket)。在使用者登入成功之後,站點生成乙個ticket,一方面將使用者身份資訊儲存在服務端快取中,以ticket為key;另一方面,將ticket儲存到使用者的cookie中。這樣,使用者再要訪問敏感資訊時,只需要每次都帶上自己cookie中的ticket就可以了。這種方法其實和使用session很像,但是因為現在基本上快取服務已經屬於必備的基礎組建了,所以並不會增加過多額外的成本,而且快取服務相比session也比較好做長時間的資料儲存。

**

身份認證系統(一)單WEB應用的身份認證

身份認證技術,也就是所謂的登入功能,是現代web系統最常見的功能之一。本系列文章就試圖為大家詳細的介紹身份認證技術。basic認證模式 basic認證模式是較早被廣泛應用的一種http標準提供的認證模式。最常見的形式之一就是在url中直接寫上使用者名稱密碼向伺服器提供身份 在basic模式之中,每次...

Spring Boot中Web應用的統一異常處理

我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。如圖 雖然,spring boot中實現了預設的error對映,但是在實際應用中,上面...

Spring Boot中Web應用的統一異常處理

我們在做web應用的時候,請求處理過程中發生錯誤是非常常見的情況。spring boot提供了乙個預設的對映 error,當處理中丟擲異常之後,會轉到該請求中處理,並且該請求有乙個全域性的錯誤頁面用來展示異常內容。選擇乙個之前實現過的web應用 chapter3 1 2 為基礎,啟動該應用,訪問乙個...