1. 概念
Apache Shiro 是一個開源安全框架,提供身份驗證、授權、密碼學和會話管理。Shiro 框架具有直觀、易用等特性,同時也能提供健壯的安全性,雖然它的功能不如 SpringSecurity 那么強大,但是在普通的項目中也夠用了。
2. 由來
Shiro 的前身是 JSecurity,2004年,Les Hazlewood 和 Jeremy Haile 創辦了 Jsecurity。當時他們找不到適用於應用程序級別的合適 Java 安全框架,同時又對 JAAS 非常失望。
2004 年到 2008 年期間,JSecurity 托管在 SourceForge 上,貢獻者包括 Peter Ledbrook、Alan Ditzel 和 Tim Veil。
2008年,JSecurity 項目貢獻給了Apache軟件基金會(ASF),並被接納成為Apache Incubator 項目,由導師管理,目標是成為一個頂級 Apache 項目。期間,Jsecurity 曾短暫更名為 Ki,隨后因商標問題被社區更名為 “Shiro” 。隨后項目持續在 Apache Incubator 中孵化,並增加了貢獻者 Kalle Korhonen。
2010年7月,Shiro 社區發布了 1.0 版,隨后社區創建了其項目管理委員會,並選舉 Les Hazlewood 為主席。2010年9月22日,Shrio 成為 Apache 軟件基金會的頂級項目(TLP)
3. 功能
Apache Shiro 是一個強大而靈活的開源安全框架,它干凈利落地處理身份認證,授權,企業會話管理和加密。Apache Shiro 的首要目標是易於使用和理解。安全有時候是很復雜的,甚至是痛苦的,但它沒有必要這樣。框架應該盡可能掩蓋復雜的地方,露出一個干凈而直觀的 API,來簡化開發人員在應用程序安全上所花費的時間。
以下是你可以用 Apache Shiro 所做的事情:
驗證用戶來核實他們的身份
對用戶執行訪問控制,如:判斷用戶是否被分配了一個確定的安全角色;判斷用戶是否被允許做某事
在任何環境下使用 Session API,即使沒有 Web 容器
在身份驗證,訪問控制期間或在會話的生命周期,對事件作出反應
聚集一個或多個用戶安全數據的數據源,並作為一個單一的復合用戶“視圖”
單點登錄(SSO)功能
為沒有關聯到登錄的用戶啟用"Remember Me"服務
。。。。等等
Apache Shiro 是一個擁有許多功能的綜合性的程序安全框架。下面的圖表展示了 Shiro 的重點:
Shiro 中有四大基石——身份驗證,授權,會話管理和加密。
Authentication:有時也簡稱為“登錄”,這是一個證明用戶是誰的行為。
Authorization:訪問控制的過程,也就是決定“誰”去訪問“什么”。
Session Management:管理用戶特定的會話,即使在非Web 或EJB 應用程序。
Cryptography:通過使用加密算法保持數據安全同時易於使用。
除此之外,Shiro 也提供了額外的功能來解決在不同環境下所面臨的安全問題,尤其是以下這些:
Web Support:Shiro 的 web 支持的 API 能夠輕松地幫助保護 Web 應用程序。
Caching:緩存是 Apache Shiro 中的第一層公民,來確保安全操作快速而又高效。
Concurrency:Apache Shiro 利用它的並發特性來支持多線程應用程序。
Testing:測試支持的存在來幫助你編寫單元測試和集成測試。
"Run As":一個允許用戶假設為另一個用戶身份(如果允許)的功能,有時候在管理腳本很有用。
"Remember Me":在會話中記住用戶的身份,這樣用戶只需要在強制登錄時候登錄。
4. 總結
Shrio的功能還是比較強大的, 雖然比不了springsecurity,但是基本功能都涵蓋了, 而且官網給出的實例也通俗易懂, 非常適合開發者去學習一下,
官網給了一個實例讓我們去學習一下, 地址如下: