shiro入門知識介紹
今天我們先來介紹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,即安全資料來源。
Shiro的架構,如下圖所示:
Subject (org.apache.shiro.subject.Subject)
與應用互動的主體,例如使用者,第三方應用等。
SecurityManager (org.apache.shiro.mgt.SecurityManager)
SecurityManager是shiro的核心,負責整合所有的元件,使他們能夠方便快捷完成某項功能。例如:身份驗證,許可權驗證等。
Authenticator (org.apache.shiro.authc.Authenticator)
認證器,負責主體認證的,這是一個擴充套件點,如果使用者覺得Shiro預設的不好,可以自定義實現;其需要認證策略(Authentication Strategy),即什麼情況下算使用者認證透過了。
Authorizer (org.apache.shiro.authz.Authorizer)
來決定主體是否有許可權進行相應的操作;即控制著使用者能訪問應用中的哪些功能。
SessionManager (org.apache.shiro.session.mgt.SessionManager)
會話管理。
SessionDAO (org.apache.shiro.session.mgt.eis.SessionDAO)
資料訪問物件,對session進行CRUD。
CacheManager (org.apache.shiro.cache.CacheManager)
快取管理器。建立和管理快取,為 authentication, authorization 和 session management 提供快取資料,避免直接訪問資料庫,提高效率。
Cryptography (org.apache.shiro.crypto.*)
密碼模組,提供加密元件。
Realms (org.apache.shiro.realm.Realm)
可以有1個或多個Realm,可以認為是安全實體資料來源,即用於獲取安全實體的;可以是JDBC實現,也可以是LDAP實現,或者記憶體實現等等;由使用者提 供;注意:Shiro不知道你的使用者/許可權儲存在哪及以何種格式儲存;所以我們一般在應用中都需要實現自己的Realm。
總結
基礎知識宏觀瞭解,掌握全域性!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9399028/viewspace-2102777/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 區塊鏈入門知識介紹!區塊鏈
- k8s(00)入門知識介紹K8S
- 區塊鏈入門知識《精通比特幣》——介紹區塊鏈比特幣
- Day148.Redis入門介紹、安裝、基本知識 -RedisRedis
- shiro教程(2): shiro介紹
- Shiro入門這篇就夠了【Shiro的基礎知識、回顧URL攔截】
- Nginx 入門介紹Nginx
- Django 入門介紹Django
- rollup入門介紹
- Tmux 入門介紹UX
- Mybatis 入門介紹MyBatis
- Rocketmq 入門介紹MQ
- Epub基礎知識介紹
- Docker入門知識Docker
- HTTP入門知識HTTP
- .NET入門知識
- Python 入門【預備知識】---- Python 簡介Python
- 知識圖譜入門——知識表示與知識建模
- 冷門前端知識,介紹雙執行緒的小程式!前端執行緒
- libevent入門介紹
- linux介紹(入門)Linux
- StackStorm 介紹與入門ORM
- GCD入門介紹一GC
- 資料庫安全知識介紹資料庫
- Oracle database 補丁知識介紹OracleDatabase
- JDE 的掃盲知識介紹。。。
- Blender入門知識整理
- Struts入門初步知識
- Python基礎入門知識點——if 語句簡介Python
- 資料庫安全基礎入門知識簡介(轉)資料庫
- NLP漢語自然語言處理入門基礎知識介紹自然語言處理
- 機器學習入門之sklearn介紹機器學習
- WebSocket協議入門介紹Web協議
- Spring Shell入門介紹Spring
- 整合學習入門介紹
- React Native入門介紹React Native
- jQuery物件入門級介紹jQuery物件
- XML入門的小介紹XML