Java认证授权框架Spring Security介绍
Spring Security 是一個非常強大的身份驗證和授權控制框架。為了滿足企業項目的不同需求,它提供了很多定制化開發的解決方案,通過簡單的調整配置,就能為我們的應用提供一套可靠的安全保障。本節課程主要任務就是搞清楚 Spring Security 是干什么的,以及它的基本用法。
系統安全和系統保護設計
在實際開發過程中,為了保證我們的系統能夠安全穩定的運行下去,一般都要從下面兩點來考慮:
系統安全性:防止非法入侵、非法請求、非法攔截等。我們需要阻止和屏蔽不信任的請求源訪問,保證數據的安全可靠,不被人竊取。
系統健壯性:也就是系統可用性,最常見的解決方案就是做服務 “冗余”。當然量級夠大的話,要做的事情會很多很多,比如限流、熔斷、降級等等。
這里只簡單的談一談系統的安全性,在項目的開發中需要從全方位、多角度做工作,以確保整個業務鏈路、整個體系范圍都能保證安全。下面就大致介紹下在實際開發過程中,開發者經常用到的一些方法:
- 數據校驗,包括前端 js 校驗和后端校驗,其實前端校驗主要是為了體驗,也就是盡可能降低出錯率,提高一次性提交的成功率。也可以說前端校驗規則是后端校驗的子集。
- 防止命令注入,比如最常見的 SQL 注入,它不是利用操作系統的 BUG 來實現攻擊,而是針對程序員編程時的疏忽,通過 SQL 語句,實現無帳號登錄,甚至篡改數據庫。
- 認證安全,對于使用應用的實體,無論是人還是系統程序,都應當做到對每個請求都能找到對應的責任實體。因此,在處理請求前,要先對認證信息進行檢測。
- 登錄鑒權,即要控制這個用戶登錄后能在系統中做什么,比如一般要把用戶分為外部用戶、員工等。
- 數據加密,對于敏感數據,不得明文傳輸和明文存儲。如數據存儲中,密碼等信息我們可以加密后再存儲;數據傳輸中,對密文使用 DES3/RSA 加密。
- 請求簽名,在外部請求時也是常見的處理方式,只有通過接口簽名驗證的請求,才信任為合法的請求。
- 在系統的安全方面,我們的 Spring Security 框架,解決的最主要的問題就是 認證安全 和 登錄鑒權。
Spring Security 核心功能介紹
Spring Security 其核心就是一組過濾器鏈,項目啟動后將會自動配置。最核心的就是 Basic Authentication Filter 用來認證用戶的身份,一個在 Spring Security 中一種過濾器處理一種認證方式。比如,對于 username password 認證過濾器來說:
- 會檢查是否是一個登錄請求;
- 是否包含 username 和 password (也就是該過濾器需要的一些認證信息);
- 如果不滿足則放行給下一個。
然后下一個認證過濾器,再次按照自身職責判定是否是自身需要的信息。中間可能還有更多的認證過濾器,只要有一個認證過濾器通過了,就是用戶登錄成功。
在整個過濾器中的最后一環是 FilterSecurityInterceptor,這里會判定該請求是否能進行訪問 REST 服務,如果被拒絕了就會拋出不同的異常(根據具體的原因)。Exception Translation Filter 會捕獲拋出的錯誤,然后根據不同的認證方式進行信息的返回提示。
參考資料
如果覺得文章有用的話就給我一個贊吧~
總結
以上是生活随笔為你收集整理的Java认证授权框架Spring Security介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 干货:RabbitMQ消息队列基本原理介
- 下一篇: 为什么建议使用Linux?从“白嫖”到精