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