shiro介绍
什么是Shiro
什么是Shiro
Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。使用Shiro的易于理解的API,您可以快速、輕松地獲得任何應用程序,從最小的移動應用程序到最大的網絡和企業應用程序。
Apache Shiro 的首要目標是易于使用和理解。安全有時候是很復雜的,甚至是痛苦的,但它沒有必要這樣。框架應該盡可能掩蓋復雜的地方,露出一個干凈而直觀的 API,來簡化開發人員在使他們的應用程序安全上的努力。以下是你可以用 Apache Shiro 所做的事情:
驗證用戶來核實他們的身份
對用戶執行訪問控制,如:判斷用戶是否被分配了一個確定的安全角色 判斷用戶是否被允許做某事
在任何環境下使用 Session API,即使沒有 Web 或 EJB 容器。
在身份驗證,訪問控制期間或在會話的生命周期,對事件作出反應。
聚集一個或多個用戶安全數據的數據源,并作為一個單一的復合用戶“視圖”。
啟用單點登錄(SSO)功能。
為沒有關聯到登錄的用戶啟用"Remember Me"服務
與Spring Security的對比
Shiro:
Shiro較之 Spring Security,Shiro在保持強大功能的同時,還在簡單性和靈活性方面擁有巨大優勢。
1. 易于理解的 Java Security API;
2. 簡單的身份認證(登錄),支持多種數據源(LDAP,JDBC,Kerberos,ActiveDirectory 等);
3. 對角色的簡單的簽權(訪問控制),支持細粒度的簽權;
4. 支持一級緩存,以提升應用程序的性能;
5. 內置的基于 POJO 企業會話管理,適用于 Web 以及非 Web 的環境;
6. 異構客戶端會話訪問;
7. 非常簡單的加密 API;
8. 不跟任何的框架或者容器捆綁,可以獨立運行
Spring Security:
除了不能脫離Spring,shiro的功能它都有。而且Spring Security對Oauth、OpenID也有支持,Shiro則需要自己手動實現。Spring Security的權限細粒度更高。
Shiro的功能模塊
Shiro可以非常容易的開發出足夠好的應用,其不僅可以用在JavaSE環境,也可以用在JavaEE環境。Shiro可以幫助我們完成:認證、授權、加密、會話管理、與Web集成、緩存等。這不就是我們想要的嘛,而且Shiro的API也是非常簡單;其基本功能點如下圖所示:
Authentication:身份認證/登錄,驗證用戶是不是擁有相應的身份。
Authorization:授權,即權限驗證,驗證某個已認證的用戶是否擁有某個權限;即判斷用戶是否能做事情。
Session Management:會話管理,即用戶登錄后就是一次會話,在沒有退出之前,它的所有信息都在會話
中;會話可以是普通JavaSE環境的,也可以是如Web環境的。
Cryptography:加密,保護數據的安全性,如密碼加密存儲到數據庫,而不是明文存儲。
Web Support:Shiro 的 web 支持的 API 能夠輕松地幫助保護 Web 應用程序。
Caching:緩存,比如用戶登錄后,其用戶信息、擁有的角色/權限不必每次去查,這樣可以提高效率。
Concurrency:Apache Shiro 利用它的并發特性來支持多線程應用程序。
Testing:測試支持的存在來幫助你編寫單元測試和集成測試,并確保你的能夠如預期的一樣安全。
"Run As":一個允許用戶假設為另一個用戶身份(如果允許)的功能,有時候在管理腳本很有用。
"Remember Me":記住我。
總結
- 上一篇: 基于JWT的API权限校验:需求分析
- 下一篇: shiro的内部体系结构