Apache Shiro是一個(gè)非常易用的Java安全框架它能提供驗(yàn)證、授權(quán)、加密和Session控制。Shiro非常輕量級(jí)而且API也非常易于理解可以使用Shiro完成從APP到企業(yè)級(jí)應(yīng)用的所有權(quán)限控制。
創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、微信小程序開發(fā)、公眾號(hào)商城、等建站開發(fā),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。
從宏觀來看Shiro架構(gòu)中有3個(gè)重要概念Subjct、SecurityManager和Realms。
Subject
Subject實(shí)際上是正在執(zhí)行的用戶的抽象“用戶”這里可以指自然人第三方服務(wù)代理賬戶或者其他。
Subject被綁定在SecurityManager上當(dāng)我們與Subject交互時(shí)實(shí)際上是與SecurityManager交互。
SecurityManager
SecurityManager是Shiro權(quán)限架構(gòu)的核心內(nèi)部維護(hù)了一系列安全組件。然而我們一旦將其配置完成真正給用戶強(qiáng)相關(guān)的就是Subject接口了。
當(dāng)我們操作subject時(shí)實(shí)際上就是在操作SecurityManager。
Realms
Reamls是Shiro與我們應(yīng)用的安全數(shù)據(jù)溝通的橋梁在Realm中真正實(shí)現(xiàn)用戶登錄與授權(quán)的邏輯。
從這個(gè)角度上來講Realms其實(shí)是一個(gè)安全領(lǐng)域的DAO發(fā)將相關(guān)數(shù)據(jù)封裝并提供給Shiro當(dāng)使用Shiro時(shí)我們必須制定至少一個(gè)Realms。
SecurityManager可以配置多個(gè)Realms但是至少一個(gè)。
Shiro已經(jīng)提供了默認(rèn)的DAO實(shí)現(xiàn)如LDAP和JDBC另外我們也能實(shí)現(xiàn)自己的DAO例如使用redis。
Subject(org.apache.shiro.subject.Subject)
與當(dāng)前軟件交互的安全視角內(nèi)的用戶抽象用戶、第三方服務(wù)
SecurityManager(org.apache.shiro.mgt.SecurityManager)
Shiro安全框架的核心像保護(hù)傘一樣管理著和協(xié)調(diào)其內(nèi)部組件確保其協(xié)調(diào)運(yùn)行。它也維護(hù)著每個(gè)用戶的Shiro角色因此它知道用戶的所有安全操作。
Authenticator(org.apache.shiro.authc.Authenticator)
負(fù)責(zé)執(zhí)行和驗(yàn)證用戶登錄行為的組件當(dāng)一個(gè)用戶試圖登錄該邏輯是由Authenticator執(zhí)行的。Authenticator知道如何去協(xié)調(diào)一個(gè)或者更多的realms這些realms保存著用戶信息。而且realms中的數(shù)據(jù)被取出用來驗(yàn)證用戶。
Authentication Strategy(org.apache.shiro.)
如果配置了多個(gè)realmsAuthentication Strategy將負(fù)責(zé)協(xié)調(diào)各Realms的判斷邏輯。
Authorizer(org.apache.shiro.authz.Authorizer)
用戶控制用戶訪問主要是決定用戶能否訪問某些資源。類似于AuthenticatorAuthorizer也知道如何協(xié)調(diào)多個(gè)數(shù)據(jù)源并據(jù)此判斷這些用戶能否執(zhí)行某個(gè)給定的Action。
SessionManager(org.apache.shiro.session.mgt.SessionManager)
SessionManager知道怎樣創(chuàng)建和管理用戶Session生命周期從而為用戶提供一個(gè)健壯的Session體驗(yàn)。這種機(jī)制是Shiro的獨(dú)創(chuàng)即使不是Web工程Shiro也能提供內(nèi)置的Session機(jī)制。
SessionDao負(fù)責(zé)存取Session。
SessionDao(org.apache.shiro.session.mgt.eis.SessionDao)
SessionDao替SessionManager完成Session的CRUD操作它允許任何Session保存方式Redis/Memcache/DB..
CacheManager(org.apache.shiro.cache.CacheManager)
用來保存Shiro使用的鑒權(quán)數(shù)據(jù)可以使用任何現(xiàn)有的cache產(chǎn)品。
Cryptography(org.apache.shiro.crypto.*)
加密工具包根據(jù)需要使用
Realms(org.apache.shiro.realm.Realm)
真正與安全相關(guān)數(shù)據(jù)例如賬戶我們可以創(chuàng)建任意多的Realm。
Shiro Configuration /bower_components/** = anon /info/home/Vh2/**=anon /=anon /** = authc