一、什么是Shiro
Apache Shiro是一個強大、靈活、開源的安全框架,它支持用戶認證、權限控制、企業會話管理以及加密等。
Apache Shiro的第一個也是最重要的一個目標就是易於使用和理解。對應用程序做安全管理常常很復雜,甚至很痛苦,但是實際上完全可以避免。一個好的安全安全管理框架應該能夠將復雜度隱藏在框架內部,對外提供簡潔、直觀的API,以便用戶可以很簡單的給應用添加安全控制。
下面是Apache Shiro能夠提供給我們的一些特性:
#,做用戶身份認證;
#,做訪問權限控制,比如:
#,這個用戶是否被賦予了某個角色;
#,這個用戶是否有權限做某件事情;
#,可以在任何環境下使用用戶會話管理,即便沒有web或者ejb容器也可以;
#,可以整合多種類型的用戶權限數據(比如關系數據庫、LDAP等)到一個用戶視圖界面;
#,支持單點登錄(Single Sign On SSO);
#,支持 記住秘密 服務。
Shiro盡力為各種應用程序的環境來達成以上的目標——從簡單的命令行程序到大型企業應用,不要求支持任何第三方的框架、容器或者應用服務器。當然,Shiro會盡力與這些環境集成,但是Shiro的運行絕對不會依賴於這些環境。
二、Apache Shiro的特性
Shiro的特性很多,下圖展示了Shiro的架構,從中我們可以了解到Shiro聚焦在哪里,並且我們這個系列的文檔也是按照類似的結構來組織。
Shiro聚焦與應用程序安全領域的四大基石:認證、授權、會話管理和保密。
#,認證,也叫作登錄,用於驗證用戶是不是他自己所說的那個人;
#,授權,也就是訪問控制,比如用於決定“誰”是否有權限訪問“什么”;
#,會話管理,管理用戶相關的會話,即使在非web和ejb的環境下也支持;
#,保密,使用特性加密算法來保證用戶數據的安全性,同時還要保證用起來夠簡單;
同時Shiro還提供了其他特性來在不同的應用程序環境下使用強化以上的四大基石:
#,Web支持:Shiro的web相關的API簡化了web應用安全控制;
#,緩存,在Shiro中,緩存是一等公民,用於保證用戶認證和權限控制的性能;
#,測試,支持可測試性,以便用戶可以方便的對安全相關代碼編寫單元測試和集成測試;
#,記住密碼,可以跨會話的記住用戶的身份信息,以便只有在一些強制性的場合才需要登錄。