shiro框架--常見面試問題


1、簡單介紹一下Shiro框架?

答:Shiro是Java的一個安全框架。使用Shiro可以非常容易的開發出足夠好的應用。其不僅可以用在JavaSE環境,也可以用在JavaEE環境。Shiro可以幫助我們完成功能:認證、授權、加密、會話管理、與Web集成、緩存等。

三個核心組件分別是Subject,SecurityManager和Realms。

2、Shiro主要的組件?

 答:(1)SecurityManager:典型的Facade,Shiro通過它對外提供安全管理的各種服務;(2)Authenticator:對“Who are you?”進行核實。通常涉及用戶名和密碼。這個組件負責收集principals 和credentials,並將它們提交給應用系統。如果提交的credentials跟應用系統中提供的 credentials吻合,就能夠繼續訪問,否則需要重新提交principals和credentials,或者直 接終止訪問;(3)Authorizer:身份份驗證通過后,由這個組件對登錄人員進行訪問控制的篩查,比如“who can do what”,或者“who can do which actions”。Shiro采用“基於Realm”的方法,即用戶 (又稱Subject)、用戶組、角色和permission的聚合體;(4)Session Manager:這個組件保證了異構客戶端的訪問,配置簡單。它是基於POJO/J2SE的,不跟任何的 客戶端或者協議綁定

3、Shiro運行原理是什么?

 答:(1)Application Code:應用程序代碼,就是我們自己的編碼,如果在程序中需要進行權限控制,需要調用Subject的API;(2)Subject:主體代表了當前用戶。所有的Subject都綁定到Security Manager,與Subject的所有交互都會委托給Security Manager,可以將Subject當成一個門面,而真正執行者是Security Manager;(3)Security Manage:安全管理器,所有與安全有關的操作都會與Security Manager交互,並且它管理所有的Subject;(4)Realm:域shiro是從Realm來獲取安全數據(用戶,角色,權限)。就是說Security Manager。

要驗證用戶身份,那么它需要從Realm獲取相應的用戶進行比較以確定用戶身份是否 合法;也需要從Realm得到用戶相應的角色/權限進行驗證用戶是否能進行操作;可以 把Realm看成DataSource,即安全數據源。

4、Shiro的權限控制方式是什么?

 答:url級別權限控制;方法注解權限控制;代碼級別權限控制。

5、什么是粗顆粒和細顆粒權限?

答:對資源類型的管理稱為粗顆粒度權限控制,即只控制到菜單、按鈕、方法。粗粒度的例子比如:用戶具有用戶管理的權限,具有導出訂單明細的權限。

對資源實例的控制稱為細顆粒度權限管理,即控制到數據級別的權限,比如:用戶只允許修改本部門的員工信息,用戶只允許導出自己創建的訂單明細。

6、粗顆粒和細顆粒如何授權?

答:對於粗顆粒度的授權可以很容易做系統架構級別的功能,即系統功能操作使用統一的粗顆粒度的權限管理。對於細顆粒度的授權不建議做成系統架構級別的功能,因為對數據級別的控制是系統的業務需求,隨着業務需求的變更業務功能變化的可能性很大,建議對數據級別的權限控制在業務層個性化開發,比如:用戶只允許修改自己創建的商品信息可以在service接口添加校驗實現,service接口需要傳入當前操作人的標識,與商品信息創建人標識對比,不一致則不允許修改商品信息。

粗顆粒權限:可以使用過慮器統一攔截url。

細顆粒權限:在service中控制,在程序級別來控制,個性化編程。

7、shiro的優點都有什么?

答:簡單的身份驗證,支持多種數據源;對角色的簡單授權,支持細粒度的授權;支持一級緩存,以提升應用程序的性能;內置基於POJO的企業會話管理,適用於web及非web環境;非常簡單的API加密;不跟任何框架綁定,可以獨立運行。

8、如何配置在Spring中配置使用 Shiro?

答:首先在 web.xml 中配置 Shiro 的 Filter;其次在 Spring 的配置文件中配置  Shiro:

    > 配置自定義 Realm:實現自定義認證和授權

    > 配置 Shiro 實體類使用的緩存策略

    > 配置 SecurityManager

    > 配置保證 Shiro 內部 Bean 聲明周期都得到執行的 Lifecycle Bean 后置處理器

    > 配置AOP 式方法級權限檢查

    > 配置 Shiro Filter

9、比較 Spring Security和Shiro?

答:相比Spring Security, Shiro 在保持強大功能的同時, 使用簡單性和靈活性;Spring Security即使是一個一個簡單的請求,最少得經過它的8個Filter;

Spring Security必須在Spring 的環境下使用。

10、Shiro授權過程是怎樣的?

答:(1)應用程序或框架代碼調用任何Subject的hasRole*, checkRole*, is Permitted*,或者check Permission*方法的變體, 傳遞任何所需的權限;(2)Subject 的實例 調用security Manager 的對應的方法,Subject 實例;(3)

Security Manager調用org.apache.shiro.authz.Authorizer 接口的對應方法,默認情況下,authorizer 實例是一個 Modular Realm Authorizer實例, 它支持協調任何授權操作過程中的一個或多個Realm 實例;(4) 每個配置好的 Realm 被檢查是否實現了相同的 Authorizer 接口. 如果是, Realm 各自的 hasRole*, checkRole*,isPermitted*,或 checkPermission* 方法將被調用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM