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