更新時(shí)間:2023-01-04 15:01:41 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2226次
1、簡(jiǎn)要介紹Shiro框架嗎?
Apache Shiro是Java的安全框架。 使用Shiro,可以輕松地開(kāi)發(fā)足夠好的APP應(yīng)用程序。 這不僅可以用于JavaSE環(huán)境,也可以用于JavaEE環(huán)境。 Shiro提供了身份驗(yàn)證、許可、加密、會(huì)話(huà)管理、與Web集成和緩存等功能。
三個(gè)核心組件: Subject、SecurityManager和Realms。
Subject :“當(dāng)前操作的用戶(hù)”。 然而,在Shiro中,Subject的概念不僅僅指人,還可以是第三方進(jìn)程、后臺(tái)賬戶(hù)(Daemon Account )或其他類(lèi)似物。 那只意味著“現(xiàn)在和軟件對(duì)話(huà)的東西”。 但是,考慮到很多目的和用途,可以認(rèn)為是Shiro的“用戶(hù)”概念。 Subject表示當(dāng)前用戶(hù)的安全操作。
安全管理器:是管理所有用戶(hù)安全操作的Shiro框架的核心和典型的Facade模型。 Shiro通過(guò)安全管理器管理內(nèi)部組件實(shí)例,并通過(guò)這些實(shí)例提供各種安全管理服務(wù)。
Realm:Realm作為Shiro與APP應(yīng)用程序安全數(shù)據(jù)之間的“橋梁”或“連接器”。 也就是說(shuō),當(dāng)Shiro對(duì)用戶(hù)執(zhí)行驗(yàn)證(登錄)和授權(quán)(訪(fǎng)問(wèn)控制)時(shí),它將從APP應(yīng)用程序配置的Realm中搜索用戶(hù)及其權(quán)限信息。
2、Shiro的四個(gè)主要組件?
安全管理器
典型的Facade、Shiro通過(guò)它對(duì)外提供安全管理的各種服務(wù)。
評(píng)估器
“世衛(wèi)組織Are you? "進(jìn)行驗(yàn)證。 通常涉及用戶(hù)名和密碼。 此組件收集principals和credentials,并將其提交到APP應(yīng)用程序系統(tǒng)。 如果提交的憑證與APP應(yīng)用程序系統(tǒng)提供的憑證匹配,則可以繼續(xù)訪(fǎng)問(wèn)。 如果不匹配,則必須重新提交principals和credentials或終止直接訪(fǎng)問(wèn)。
Authorizer
通過(guò)認(rèn)證后,此組件將幫助您篩選登錄者的訪(fǎng)問(wèn)控制,包括“世衛(wèi)組織can do what”和“世衛(wèi)組織can do which actions”。 Shiro采用“基于Realm”的方法。 這意味著用戶(hù)、用戶(hù)組、角色和權(quán)限的聚合物。
會(huì)話(huà)管理器
該組件保證了異構(gòu)客戶(hù)端的訪(fǎng)問(wèn),配置簡(jiǎn)單。 它基于POJO/J2SE,不與任何客戶(hù)端或協(xié)議相關(guān)聯(lián)。
3、Shiro的工作原理?
APP代碼(APP應(yīng)用代碼是我們自己的代碼。 程序內(nèi)需要權(quán)限控制時(shí),需要調(diào)用Subject的API。
Subject :主體表示當(dāng)前用戶(hù)。 所有Subject都與SecurityManager捆綁在一起,與Subject的所有交互都委托給SecurityManager,可以將Subject視為一扇門(mén)。 真正的執(zhí)行者是安全管理器。
SecurityManage (所有安全相關(guān)操作都與SecurityManager交互并管理所有Subject的安全管理器。
Realm (域shiro從Realm獲取安全數(shù)據(jù)(用戶(hù)、角色、權(quán)限)。 即安全管理器
要驗(yàn)證用戶(hù)id,必須從Realm中獲取相應(yīng)的用戶(hù)并進(jìn)行比較,以確定用戶(hù)id是否合法。 此外,還必須從Realm獲得用戶(hù)的相應(yīng)角色/權(quán)限,以驗(yàn)證用戶(hù)是否可以操作。 Realm可以被認(rèn)為是數(shù)據(jù)源,也就是安全的數(shù)據(jù)源。
4、Shiro的四種權(quán)限控制方式?
url級(jí)別的權(quán)限控制
方法注釋權(quán)限控制
代碼級(jí)別的權(quán)限控制
5、什么是粗粒子和微粒的權(quán)限?
資源類(lèi)型的管理稱(chēng)為粗粒度權(quán)限控制,只能控制菜單、按鈕和方法。 作為粗粒度的例子,用戶(hù)具有用戶(hù)管理的權(quán)限,并具有導(dǎo)出訂單行的權(quán)限。
管理資源實(shí)例稱(chēng)為粒度管理,它管理數(shù)據(jù)級(jí)別的權(quán)限。 例如,用戶(hù)只允許修改自己部門(mén)的員工信息,用戶(hù)只允許導(dǎo)出自己創(chuàng)建的訂單詳細(xì)信息。
總結(jié):
粗粒子權(quán)限:對(duì)url鏈接的控制。
微粒權(quán)限:數(shù)據(jù)級(jí)別的控制。
例如,衛(wèi)生局可以咨詢(xún)所有用戶(hù),衛(wèi)生室只能咨詢(xún)我們的用戶(hù)。
6、粗粒子和微粒如何認(rèn)可?
對(duì)于粗粒度的授權(quán),很容易使用系統(tǒng)架構(gòu)級(jí)別的功能,即系統(tǒng)功能操作中統(tǒng)一的粗粒度權(quán)限管理。 對(duì)于精細(xì)粒度授權(quán),建議不要將其作為系統(tǒng)體系結(jié)構(gòu)級(jí)別的功能。 由于數(shù)據(jù)級(jí)管理是系統(tǒng)的業(yè)務(wù)需求,業(yè)務(wù)功能很可能會(huì)隨著業(yè)務(wù)需求的變化而發(fā)生變化,因此建議在業(yè)務(wù)級(jí)定制和開(kāi)發(fā)數(shù)據(jù)級(jí)權(quán)限管理。 例如,用戶(hù)只能通過(guò)在服務(wù)接口中添加驗(yàn)證實(shí)現(xiàn)來(lái)更改自己創(chuàng)建的商品信息,服務(wù)接口必須接收當(dāng)前操作員的標(biāo)識(shí)信息。 與商品信息制作者的識(shí)別信息進(jìn)行比較,如果不一致,則不允許變更商品
粗粒子權(quán)限:可以用過(guò)濾器批量阻止url。
微粒權(quán)限:服務(wù)控制,程序級(jí)控制,定制編程。
以上就是“整理出來(lái)的精選shiro面試題”,你能回答上來(lái)嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動(dòng)力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)