Shiro 是一個功能強大、靈活的,開源的安全框架。它可以乾淨利落地處理身份驗證、授權、企業會話管理和加密。Shiro 的首要目標是易於使用和理解。安全通常很複雜,甚至讓人感到很痛苦,但是 Shiro 卻不是這樣子的。一個好的安全框架應該屏蔽複雜性,向外暴露簡單、直觀的 API,來簡化開發人員實現應用程序安全所花費的時間和精力。
Shiro 能做什麼呢?
- 驗證用戶身份
- 用戶訪問權限控制,比如:1、判斷用戶是否分配了一定的安全角色。2、判斷用戶是否被授予完成某個操作的權限
- 在非 Web 或 EJB 容器的環境下可以任意使用 Session API
- 可以響應認證、訪問控制,或者 Session 生命週期中發生的事件
- 可將一個或以上用戶安全數據源數據組合成一個複合的用戶 "view"(視圖)
- 支持單點登錄(SSO)功能
- 支持提供“Remember Me”服務,獲取用戶關聯信息而無需登錄
…
等等——都集成到一個有凝聚力的易於使用的 API。
Shiro的框架圖:
Authentication(認證), Authorization(授權), Session Management(會話管理), Cryptography(加密)被 Shiro 框架的開發團隊稱之爲應用安全的四大基石。
- Authentication(認證):用戶身份識別,通常被稱爲用戶“登錄”
- Authorization(授權):訪問控制。比如某個用戶是否具有某個操作的使用權限。
- Session Management(會話管理):特定於用戶的會話管理,甚至在非web 或 EJB 應用程序。
- Cryptography(加密):在對數據源使用加密算法加密的同時,保證易於使用。
還有其他的功能來支持和加強這些不同應用環境下安全領域的關注點。特別是對以下的功能支持:
- Web支持:Shiro 提供的 Web 支持 api ,可以很輕鬆的保護 Web 應用程序的安全。
- 緩存:緩存是 Apache Shiro 保證安全操作快速、高效的重要手段。
- "Remember Me":跨 session 記錄用戶的身份,只有在強制需要時才需要登錄。
- "Run As":這個功能允許用戶假設另一個用戶的身份(在許可的前提下)。
- 測試:支持單元測試和集成測試,確保代碼和預想的一樣安全。
- 併發:Apache Shiro 支持多線程應用程序的併發特性。
注意: Shiro 不會去維護用戶、維護權限,這些需要我們自己去設計/提供,然後通過相應的接口注入給 Shiro