關(guān)于SpringSecurity簡(jiǎn)介以及和Shiro的區(qū)別
Spring Security簡(jiǎn)介
官網(wǎng): https://spring.io/projects/spring-security
中文文檔: https://www.springcloud.cc/spring-security.html

Spring Security 的前身是 Acegi Security,在被收納為Spring子項(xiàng)目后正式更名為Spring Security。
在筆者成書時(shí),Spring Security已經(jīng)升級(jí)到5.1.3.RELEASE版本,加入了原生OAuth2.0框架,支持更加現(xiàn)代化的密碼加密方式??梢灶A(yù)見,在Java應(yīng)用安全領(lǐng)域,Spring Security會(huì)成為被首先推崇的解決方案,就像我們看到服務(wù)器就會(huì)聯(lián)想到Linux一樣順理成章。
應(yīng)用程序的安全性通常體現(xiàn)在兩個(gè)方面:認(rèn)證和授權(quán)。
認(rèn)證是確認(rèn)某主體在某系統(tǒng)中是否合法、可用的過(guò)程。這里的主體既可以是登錄系統(tǒng)的用戶,也可以是接入的設(shè)備或者其他系統(tǒng)。授權(quán)是指當(dāng)主體通過(guò)認(rèn)證之后,是否允許其執(zhí)行某項(xiàng)操作的過(guò)程。
這些概念并非Spring Security獨(dú)有,而是應(yīng)用安全的基本關(guān)注點(diǎn)。Spring Security可以幫助我們更便捷地完成認(rèn)證和授權(quán),Spring Security 支持廣泛的認(rèn)證技術(shù),這些認(rèn)證技術(shù)大多由第三方或相關(guān)標(biāo)準(zhǔn)組織開發(fā)。Spring Security已經(jīng)集成的認(rèn)證技術(shù)如下:
- HTTP BASIC authentication headers:一個(gè)基于IETF RFC的標(biāo)準(zhǔn)。
- HTTP Digest authentication headers:一個(gè)基于IETF RFC的標(biāo)準(zhǔn)。
- HTTP X.509 client certificate exchange:一個(gè)基于IETF RFC的標(biāo)準(zhǔn)。
- LDAP:一種常見的跨平臺(tái)身份驗(yàn)證方式。
- Form-based authentication:用于簡(jiǎn)單的用戶界面需求。
- OpenID authentication:一種去中心化的身份認(rèn)證方式。
- Authentication based on pre-established request headers:類似于 Computer Associates SiteMinder,一種用戶身份驗(yàn)證及授權(quán)的集中式安全基礎(chǔ)方案。
- JasigCentral Authentication Service:?jiǎn)吸c(diǎn)登錄方案。
- Transparent authentication context propagation for Remote Method Invocation(RMI)and HttpInvoker:一個(gè)Spring遠(yuǎn)程調(diào)用協(xié)議。
- Automatic "remember-me" authentication:允許在指定到期時(shí)間前自行重新登錄系統(tǒng)。
- Anonymous authentication:允許匿名用戶使用特定的身份安全訪問資源。
- Run-as authentication:允許在一個(gè)會(huì)話中變換用戶身份的機(jī)制。
- Java Authentication and Authorization Service:JAAS:Java驗(yàn)證和授權(quán)API。
- Java EE container authentication:允許系統(tǒng)繼續(xù)使用容器管理這種身份驗(yàn)證方式。
- Kerberos:一種使用對(duì)稱密鑰機(jī)制,允許客戶端與服務(wù)器相互確認(rèn)身份的認(rèn)證協(xié)議。
除此之外,Spring Security還引入了一些第三方包,用于支持更多的認(rèn)證技術(shù),如JOSSO等。如果所有這些技術(shù)都無(wú)法滿足需求,則Spring Security允許我們編寫自己的認(rèn)證技術(shù)。因此,在絕大部分情況下,當(dāng)我們有Java應(yīng)用安全方面的需求時(shí),選擇Spring Security往往是正確而有效的。
Internet工程任務(wù)組(Internet Engineering Task Force,IETF)是推動(dòng)Internet標(biāo)準(zhǔn)規(guī)范制定的最主要的組織。請(qǐng)求注解(Request For Comments,RFC)包含大多數(shù)關(guān)于Internet的重要文字資料,被稱為“網(wǎng)絡(luò)知識(shí)圣經(jīng)”。
在授權(quán)上,Spring Security不僅支持基于URL對(duì)Web的請(qǐng)求授權(quán),還支持方法訪問授權(quán)、對(duì)象訪問授權(quán)等,基本涵蓋常見的大部分授權(quán)場(chǎng)景。
很多時(shí)候,一個(gè)系統(tǒng)的安全性完全取決于系統(tǒng)開發(fā)人員的安全意識(shí)。例如,在我們從未聽過(guò)SQL注入時(shí),如何意識(shí)到要對(duì)SQL注入做防護(hù)?關(guān)于Web系統(tǒng)安全的攻擊方式非常多,諸如XSS、CSRF等,未來(lái)還會(huì)暴露出更多的攻擊方式,我們只有在充分了解其攻擊原理后,才能提出完善而有效的防護(hù)策略。在筆者看來(lái),學(xué)習(xí)Spring Security并非局限于降低Java應(yīng)用的安全開發(fā)成本,通過(guò)Spring Security了解常見的安全攻擊手段以及對(duì)應(yīng)的防護(hù)方法也尤為重要,這些是脫離具體開發(fā)語(yǔ)言而存在的。
Spring Security和Shiro的區(qū)別
1.相同點(diǎn)
- ①認(rèn)證功能
- ②授權(quán)功能
- ③加密功能
- ④會(huì)話管理
- ⑤緩存支持
- ⑥r(nóng)ememberMe功能 … …
2.不同點(diǎn)
- ①Spring Security是一個(gè)重量級(jí)的安全管理框架;Shiro則是一個(gè)輕量級(jí)的安全管理框架
- ②Spring Security 基于Spring開發(fā),項(xiàng)目若使用Spring作為基礎(chǔ),配合Spring Security 做權(quán)限更便捷,而Shiro需要和Spring 進(jìn)行整合開發(fā);
- ③Spring Security 功能比Shiro更加豐富些,例如安全維護(hù)方面;
- ④Spring Security 社區(qū)資源相對(duì)于Shiro更加豐富;
- ⑤Shiro 的配置和使用比較簡(jiǎn)單,Spring Security 上手復(fù)雜些;
- ⑥Shiro 依賴性低,不需要任何框架和容器,可以獨(dú)立運(yùn)行, Spring Security依賴Spring容器;
- ⑦Shiro 不僅僅可以使用在web中,它可以工作在任何應(yīng)用環(huán)境中。在集群會(huì)話時(shí)Shiro最重要的一個(gè)好處或許就是它的會(huì)話是獨(dú)立于容器的
到此這篇關(guān)于關(guān)于SpringSecurity簡(jiǎn)介以及和Shiro的區(qū)別的文章就介紹到這了,更多相關(guān)SpringSecurity和Shiro的區(qū)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Spring Kafka中關(guān)于Kafka的配置參數(shù)
這篇文章主要介紹了詳解Spring Kafka中關(guān)于Kafka的配置參數(shù),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
SpringBoot+MyBatis+AOP實(shí)現(xiàn)讀寫分離的示例代碼
高并發(fā)這個(gè)階段,肯定是需要做MySQL讀寫分離的。本文主要介紹了SpringBoot+MyBatis+AOP實(shí)現(xiàn)讀寫分離的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Java如果在try里面執(zhí)行return還會(huì)不會(huì)執(zhí)行finally
這篇文章主要介紹了Java如果在try里面執(zhí)行return,那么還會(huì)不會(huì)執(zhí)行finally,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
詳解Spring bean的注解注入之@Autowired的原理及使用
之前講過(guò)bean注入是什么,也使用了xml的配置文件進(jìn)行bean注入,這也是Spring的最原始的注入方式(xml注入).本文主要講解的注解有以下幾個(gè):@Autowired、 @Service、@Repository、@Controller 、@Component、@Bean、@Configuration、@Resource ,需要的朋友可以參考下2021-06-06
SpringBoot無(wú)法請(qǐng)求html等靜態(tài)資源文件webapp或者resources/static的問題及解決方案
今天遇到一個(gè)問題無(wú)法訪問靜態(tài)資源文件,html,本文給大家分享SpringBoot無(wú)法請(qǐng)求html等靜態(tài)資源文件webapp或者resources/static的問題及解決方案,感興趣的朋友一起看看吧2024-05-05
mybatis if test 不為空字符串且不為null的問題
這篇文章主要介紹了mybatis if test 不為空字符串且不為null的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03

