近期在ITOO項目中研究使用Apache shiro集羣中要解決的兩個問題,一個是Session的共享問題,一個是授權信息的cache共享問題,官網上給的例子是Ehcache的實現,在配置說明上不算很詳細,我在我們的項目中使用的是nosql(Redis)替代了ehcache做了session和cache的存儲,接下來從shiro、Cas、redis、session等等基礎知識、基本原理集成的角度來不斷的深入分析,系列文章篇幅很長,很豐富,盡請期待!
Apache shiro集羣實現 (一) shiro入門介紹
Apache shiro集羣實現 (二) shiro 的INI配置
Apache shiro集羣實現 (三)shiro身份認證(Shiro Authentication)
Apache shiro集羣實現 (四)shiro授權(Authentication)--訪問控制
Apache shiro集羣實現 (五)分佈式集羣系統下的高可用session解決方案
Apache shiro集羣實現 (六)分佈式集羣系統下的高可用session解決方案---Session共享
一、shiro功能介紹
- Authentication:身份認證/登錄
- Authorization:驗證權限,即,驗證某個人是否有做某件事的權限。
- Session Management:會話管理。管理用戶特定的會話,支持web,非web,ejb。
- Cryptography: 加密,保證數據安全。
- 其他特性。
- Web Support:web支持,更容易繼承web應用。
- Caching:緩存
- Concurrency :多線程應用的併發驗證,即如在一個線程中開啓另一個線程,能把權限自動傳播過去;
- Testing:提供測試支持。
- Run As:允許一個用戶假裝爲另一個用戶(如果他們允許)的身份進行訪問;
- Remember Me:記住我,即記住登錄狀態,一次登錄後,下次再來的話不用登錄了 。
二、架構介紹
Subject:主體。抽象概念,代表了當前“用戶”,這個用戶不一定是一個具體的人,與當前應用交互的任何東西都是Subject,如網絡爬蟲,機器人等。
SecurityManager:安全管理器。shiro的核心, 所有與安全有關的操作都會與SecurityManager交互;且它管理着所有Subject。
Realms: shiro和應用程序的權限數據之間的橋樑,爲shiro提供安全數據。 SecurityManager要驗證用戶身份,那麼它需要從Realm獲取相應的用戶進行比較以確定用戶身份是否合法;也需要從Realm得到用戶相應的角色/權限進行驗證用戶是否能進行操作;可以把Realm看成DataSource,即安全數據源。