一、Spring Security
Spring Security是Spring 家族的一員,它通過提供完整可擴展的認證和授權支持來保護程序。
它還充分利用了Spring IoC(控制反轉)、DI(依賴注入)和AOP(面向切面編程)的功能,提供了大量在Spring應用上下文中配置的Bean,為應用系統提供聲明式的安全訪問控制功能,減少了為系統安全權限控制而編寫大量重復代碼的工作。
它是一個重量級的安全框架,搭配了流行的安全算法實現。安全控制主要包括“認證”與“授權”兩個操作。
“認證”是驗證確認身份以授予對系統的訪問權限,是驗證用戶憑據以獲得用戶訪問權限的過程。它決定用戶是否是他聲稱的用戶。
“授權”是確定你是否有權訪問資源,是驗證是否允許訪問的過程。它確定用戶可以訪問和不訪問的內容。
二、Shiro
Shiro是Apache 旗下的輕量級權限控制框架。它主張的理念是把復雜的事情變簡單,針對有更高要求性能的互聯網應用有著更好的表現。
Shiro有著很好的通用性,不局限于Web 環境,但在Web 環境下一些特定的需求需要手動編寫代碼定制,有一定的代碼侵入。
Shiro有著易于理解的 Java Security API、簡單的身份認證,支持多種數據源,能對角色的簡單的簽權,支持細粒度的簽權,內置會話管理,簡單的加密 API,不跟任何的框架捆綁,可以獨立運行。
Shiro的三個核心組件:Subject,SecurityManager 和 Realms.
Subject:主體,與當前應用交互的任何東西。
所有Subject都會綁定到SecurityManager,與Subject的所有交互都會委托給SecurityManager。Subject相當于門戶,SecurityManager是執行者;
SecurityManager:安全管理器。所有與安全有關的操作都會與SecurityManager交互,管理著所有Subject。它是Shiro的核心,負責與其它組件進行交互。
Realm:域。Realm類似于安全數據源。Shiro將會從Realm獲取安全數據(如用戶、角色、權限)。
如果SecurityManager需要驗證用戶身份,那么它需要從Realm獲取相應的用戶信息進行比較以確定用戶身份是否合法,也需要從Realm得到用戶相對應的角色或者權限進行驗證用戶是否能進行操作。
三、對比
在 Spring Boot 出現之前,Spring Security 雖然已經發展了很久,但因為其使用過于復雜,所以盡管功能比Shiro強大,但使用的并不多,而且一般來說,Shiro的功能足以夠一般項目使用。在安全管理這個領域,以往一直是使用 Shiro居多。
自從有了Spring Boot 之后,Spring Boot為Spring Security提供了自動化配置,Spring Security的使用頻率才高起來。
因此,常見的安全管理技術棧的組合為:
SSM + Shiro和Spring Boot/Spring Cloud + SpringSecurity
但技術棧是通用的,可以任意組合。
東八區網絡成立于2006年,是一家擁有18年網站制作的專業化網站設計公司,主要業務范圍:濰坊網站建設、濰坊網站制作、濰坊網站設計公司;濰坊企業郵箱、濰坊微信、濰坊小程序開發、商城、外貿等網站開發,濰坊最大的網站建設公司、濰坊最大的網站制作公司。
info@dongbaqu.com
4000-117-087
4000-117-087
北京 - 海淀區海淀西大街36號9層A65室
青島 - 市北區山東路177號魯邦廣場B座701
成都 - 成都市高新區錦城大道666號4棟10層