Shiro是Apache開發的一款基於強大易用的Java安全框架的軟件,可以處理身份驗證、授權、企業會話管理和加密。Shiro擁有強大的功能,可以實現系統的權限管理,有效提高開發效率,從而降低開發成本。shiro的功能具體是什麼?
Shiro功能如下圖所示:
Shiro主要功能是認證(Authentication)證明哪個用戶登錄;授權(Authorization)訪問控制的過程,即確定用戶的訪問權限;會話管理(Session Management)即使在非Web或EJB應用程序中也可以管理用戶特定的會話;密碼學(Cryptography)使用加密算法保持數據安全性,同時易於使用。
明白了shiro的主要功能之後,才能在實例中更好地應用shiro,發揮shiro的功能。那麼,shiro應用的基本架構是什麼?
subject:主體,可以是用戶也可以是程序,主體要訪問系統,系統需要對主體進行認證、授權。
securityManager:安全管理器,主體進行認證和授權都是通過securityManager進行。
authenticator:認證器,主體進行認證最終通過authenticator進行的。
authorizer:授權器,主體進行授權最終通過authorizer進行的。
sessionManager:web應用中一般是用web容器對session進行管理,shiro也提供一套session管理的方式。
SessionDao: 通過SessionDao管理session數據,針對個性化的session數據存儲需要使用sessionDao。
cache Manager:緩存管理器,主要對session和授權數據進行緩存,比如將授權數據通過cacheManager進行緩存管理,和ehcache整合對緩存數據進行管理。
realm:域,領域,相當於數據源,通過realm存取認證、授權相關數據。
注意:在realm中存儲授權和認證的邏輯。
cryptography:密碼管理,提供了一套加密/解密的組件,方便開發。比如提供常用的散列、加/解密等功能。
由架構可以得知shiro的工作原理是什麼,從而從本質上理解shiro是什麼。