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