中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shiro能做什么

發布時間:2021-10-20 09:24:07 來源:億速云 閱讀:152 作者:iii 欄目:開發技術

本篇內容主要講解“Shiro能做什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Shiro能做什么”吧!

前言

權限管理是每個系統不可缺少的,它隸屬于系統安全的范疇,實現對用戶訪問系統的控制,按照指定的安全策略控制用戶對資源的訪問。

權限管理通常包括用戶身份認證和授權兩部分,簡稱認證授權。對于需要訪問控制的資源,需先進行用戶身份認證,認證通過后用戶具有該資源的訪問權限便可進行訪問。

針對權限管理,在Java體系中,常見的權限框架有Shiro和Spring  Security,當然在一些簡單或古老的系統中可能還在用手寫的filter來進行權限的管理和控制。本文先從Shiro的功能、組件、架構等方面來帶大家了解一下Shiro框架。

Shiro簡介

Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。與之相對應的便是Spring  Security,但在大多數項目中開發人員更愿意使用Shiro來管理權限。

主要原因是使用起來比較簡單,而Spring Security相對來說更重量級一些,學習曲線比較陡峭,而實際環境中也并不需要Spring  Security那么多功能。所以,一般情況下,使用Shiro便足夠了。

Shiro可以快速、輕松的運用于任何應用程序中,從最小的移動應用程序到最大的網絡和企業應用程序。

Shiro能做什么

Shiro提供了以下功能:認證(Authentication)、授權(Authorization)、加密(Cryptography)、Session管理(Session  Management)、Web集成(Web  Support)、緩存(Caching)等。可用于保護任何應用程序:從命令行應用程序、移動應用程序到最大的Web和企業應用程序。

關于Shiro的核心功能,官方提供了下圖:

Shiro能做什么

使用Shiro我們可以實現以下功能:

  • 用戶認證;

  • 用戶訪問控制:判斷用戶是否擁有特定的角色;判斷用戶是否可執行某個操作;

  • 在任何環境下使用Session API,即使在Web或EJB容器之外的應用;

  • 可在認證、訪問控制和會話期間,對事件做出響應;

  • 匯總一個或多個用戶安全數據的數據源,并將其全部顯示為單個復合用戶“視圖”;

  • 支持單點登錄(SSO)功能;

  • 支持登錄時的“記住”功能;

  • 其他應用程序;

Shiro特點

Shiro的目標是:在各類應用(從命令行到大型企業應用)中,做到不依賴其他三方框架、容器或應用程序本身的依賴,可以在任何環境中直接使用。同時它又具有以下特點:

  • 易于理解的Java Security API;

  • 簡單的身份認證(登錄),支持多種數據源(LDAP,JDBC,Kerberos,ActiveDirectory 等);

  • 對角色的簡單的簽權(訪問控制),支持細粒度的簽權;

  • 支持一級緩存,以提升應用程序的性能;

  • 內置的基于POJO企業會話管理,適用于Web以及非Web的環境;

  • 異構客戶端會話訪問;

  • 非常簡單的加密 API;

  • 不跟任何的框架或者容器捆綁,可以獨立運行;

Shiro各模塊功能

結合下圖,我們來細化一下Shiro各個模塊對應的功能:

Shiro能做什么

Authentication:身份認證/登錄,驗證用戶是不是擁有相應的身份;

Authorization:授權,即權限驗證。驗證某個用戶是否有操作某個功能的權限。如:驗證用戶是否擁有某個角色、是否有操作某個資源的權限;

Session Management:Session管理,存儲用戶登錄信息于會話當中,支持Web環境和非Web環境;

Cryptography:加密數據,并保持易用性,比如密碼加密后存儲到數據庫;

Web Support:Web支持,可以方便的集成到Web環境;

Caching:緩存,比如用戶登錄后,對用戶信息、角色/權限進行緩存;

Concurrency:Shiro支持多線程場景下的并發驗證,即如在一個線程中開啟另一個線程,能把權限自動傳播過去;

Testing:提供測試支持;

Run As:允許一個用戶假裝為另一個用戶(如果他們允許)進行訪問;

Remember Me:記住我,登錄之后,下次可直接進入系統。

看了上面的組件是不是突然覺得Shiro在實際應用中被小看了?雖然Shiro為我們提供了這么多功能,但它并不會幫我們實現具體的用戶、權限等體系,關于用戶、角色、權限等需要自行設計,然后在Shiro中進行處理即可。

核心組件

Shiro包括三大核心組件:Subject,SecurityManager和Realms。這三個組件的關系如下圖:

Shiro能做什么

Subject:主體,即“當前操作用戶”。在Shiro中Subject并不僅僅指人,是一個抽象概念,也可以是第三方進程、后臺帳戶(Daemon  Account)或其他類似事物(如爬蟲、機器人等)。也就是說它僅僅意味著“當前跟軟件交互的東西”。所有Subject都綁定到SecurityManager上,SecurityManager才是實際的執行者。

SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通過SecurityManager來管理內部組件實例(包括所有的Subject),并通過它來提供安全管理的各種服務。類似SpringMVC中的DispatcherServlet的作用。

Realm:域,充當了Shiro與應用安全數據間的“橋梁”或者“連接器”。也就是說,當對用戶執行認證(登錄)和授權(訪問控制)驗證時,Shiro會從應用配置的Realm中查找用戶及其權限信息。從這個意義上講,Realm本質上是一個安全相關的DAO:它封裝了數據源的連接細節,在需要時將相關數據提供給Shiro。當配置Shiro時,至少指定一個Realm,用于認證和(或)授權。

Shiro內置了可以連接大量安全數據源(又名目錄)的Realm,如LDAP、關系數據庫(JDBC)、類似INI的文本配置資源以及屬性文件等。如果默認的Realm不能滿足需求,還可以自定義Realm實現。

Shiro架構概覽

分析了上述組件,我們梳理一下Shiro使用的簡單場景:應用程序通過Subject來進行認證和授權,而Subject是委托給SecurityManager管理的。SecurityManager進行認證和授權又需要Authenticator和Realm的支持,因此需將Realm注入給SecurityManager。

那么,Shiro內部的架構又是如何呢?

Shiro能做什么

上圖中,Subject、SecurityManager、Realm我們在前面已經講到過了,這里再看看其他模塊:

Authenticator:認證器,負責Subject的認證,支持自定義實現;需要認證策略(Authentication  Strategy),即認證通過的條件。

Authrizer:授權器,或者訪問控制器,用來決定主體是否有權限進行相應的操作。

SessionManager:SessionManager用于管理Session的生命周期。Shiro可用在Web環境和非Web環境,所以Shiro就抽象出一個Session來管理主體與應用之間交互的數據,這樣就可以將不同應用的Session進行集中管理,從而實現分布式會話。

SessionDAO:如果想把Session存儲到數據庫或Memcached當中,則可實現對應的SessionDAO來實現會話的CRUD。SessionDAO中可以使用Cache進行緩存,來提高性能;

CacheManager:緩存控制器,用來管理用戶、角色、權限等緩存。

Cryptography:密碼模塊,提供了常見的加解密組件。

到此,相信大家對“Shiro能做什么”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

静宁县| 台安县| 凤阳县| 遂宁市| 中山市| 尤溪县| 通渭县| 德惠市| 南木林县| 文成县| 玉门市| 汾西县| 盐亭县| 司法| 孝义市| 聊城市| 京山县| 庄浪县| 兴仁县| 日土县| 墨竹工卡县| 彩票| 昔阳县| 印江| 杂多县| 嵩明县| 建始县| 丹东市| 礼泉县| 辉南县| 柯坪县| 武宁县| 外汇| 田林县| 浮梁县| 托克逊县| 会昌县| 电白县| 平安县| 金湖县| 驻马店市|