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