更新時(shí)間:2018年10月24日16時(shí)06分 來(lái)源:傳智播客 瀏覽次數(shù):
Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉(zhuǎn)Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面編程)功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制功能,減少了為企業(yè)系統(tǒng)安全控制編寫大量重復(fù)代碼的工作。它是一個(gè)輕量級(jí)的安全框架,它確保基于Spring的應(yīng)用程序提供身份驗(yàn)證和授權(quán)支持。它與Spring MVC有很好地集成,并配備了流行的安全算法實(shí)現(xiàn)捆綁在一起。安全主要包括兩個(gè)操作“認(rèn)證”與“驗(yàn)證”(有時(shí)候也會(huì)叫做權(quán)限控制)。“認(rèn)證”是為用戶建立一個(gè)其聲明的角色的過(guò)程,這個(gè)角色可以一個(gè)用戶、一個(gè)設(shè)備或者一個(gè)系統(tǒng)。“驗(yàn)證”指的是一個(gè)用戶在你的應(yīng)用中能夠執(zhí)行某個(gè)操作。在到達(dá)授權(quán)判斷之前,角色已經(jīng)在身份認(rèn)證過(guò)程中建立了。
它的設(shè)計(jì)是基于框架內(nèi)大范圍的依賴的,可以被劃分為以下幾塊。
Web/Http 安全:這是最復(fù)雜的部分。通過(guò)建立 filter 和相關(guān)的 service bean 來(lái)實(shí)現(xiàn)框架的認(rèn)證機(jī)制。當(dāng)訪問(wèn)受保護(hù)的 URL 時(shí)會(huì)將用戶引入登錄界面或者是錯(cuò)誤提示界面。
業(yè)務(wù)對(duì)象或者方法的安全:控制方法訪問(wèn)權(quán)限的。
AuthenticationManager:處理來(lái)自于框架其他部分的認(rèn)證請(qǐng)求。
AccessDecisionManager:為 Web 或方法的安全提供訪問(wèn)決策。會(huì)注冊(cè)一個(gè)默認(rèn)的,但是我們也可以通過(guò)普通 bean 注冊(cè)的方式使用自定義的 AccessDecisionManager。
AuthenticationProvider:AuthenticationManager 是通過(guò)它來(lái)認(rèn)證用戶的。
UserDetailsService:跟 AuthenticationProvider 關(guān)系密切,用來(lái)獲取用戶信息的。
Shiro和Spring Security比較
Shiro比Spring更容易使用,實(shí)現(xiàn)和最重要的理解
Spring Security更加知名的唯一原因是因?yàn)槠放泼Q
“Spring”以簡(jiǎn)單而聞名,但諷刺的是很多人發(fā)現(xiàn)安裝Spring Security很難
然而,Spring Security卻有更好的社區(qū)支持
Apache Shiro在Spring Security處理密碼學(xué)方面有一個(gè)額外的模塊
Spring-security 對(duì)spring 結(jié)合較好,如果項(xiàng)目用的springmvc ,使用起來(lái)很方便。但是如果項(xiàng)目中沒(méi)有用到spring,那就不要考慮它了。
Shiro 功能強(qiáng)大、且 簡(jiǎn)單、靈活。是Apache 下的項(xiàng)目比較可靠,且不跟任何的框架或者容器綁定,可以獨(dú)立運(yùn)行
北京校區(qū)