Shiro簡介
Apache Shiro是一個強大且易用的Java安全框架,執(zhí)行身份驗證、授權(quán)、密碼學(xué)和會話管理月幌。使用Shiro的易于理解的API,您可以快速、輕松地獲得任何應(yīng)用程序,從最小的移動應(yīng)用程序到最大的網(wǎng)絡(luò)和企業(yè)應(yīng)用程序悬蔽。
Shiro架構(gòu)與功能介紹
1.認證與授權(quán)相關(guān)基本概念
兩個基本的概念
安全實體:系統(tǒng)需要保護的具體對象數(shù)據(jù)
權(quán)限:系統(tǒng)相關(guān)的功能操作扯躺,例如基本的CRUD
Authentication: 認證。即驗證是哪個用戶登錄蝎困。
Authorization:也被稱為訪問控制录语,即決定當前登錄用戶是否有權(quán)限去訪問受保護的資源。
Cryptography:通過加密算法保護數(shù)據(jù)安全禾乘。
Session Management: 當用戶使用你的應(yīng)用是自身攜帶的數(shù)據(jù)澎埠。
Web Integration: 雖然Shiro是設(shè)計用來確保任何基于JVM的應(yīng)用,但是很多時候是用來保護Web應(yīng)用始藕。
Integrations:可以很好的集成其他的技術(shù)和框架失暂。
2.Shiro四大核心功能:Authentication,Authorization,Cryptography,Session Management
Shiro架構(gòu)
3.Shiro三個核心組件:Subject, SecurityManager 和 Realms.
subject:主體,可以是用戶也可以是程序鳄虱,主體要訪問系統(tǒng)弟塞,系統(tǒng)需要對主體進行認證、授權(quán)拙已。
securityManager:安全管理器决记,主體進行認證和授權(quán)都是通過securityManager進行,是shiro的心臟倍踪。
realm:域系宫,領(lǐng)域,相當于數(shù)據(jù)源建车,通俗意義的DAO層扩借,通過realm存取認證、授權(quán)相關(guān)數(shù)據(jù)缤至。
Spring Security簡介
Spring Security是一個靈活和強大的身份驗證和訪問控制框架潮罪,以確保基于Spring的Java Web應(yīng)用程序的安全领斥。它是一個輕量級的安全框架嫉到,它確保基于Spring的應(yīng)用程序提供身份驗證和授權(quán)支持月洛。它與Spring MVC有很好地集成何恶,并配備了流行的安全算法實現(xiàn)捆綁在一起。安全主要包括兩個操作“認證”與“驗證”(有時候也會叫做權(quán)限控制)嚼黔∠覆悖“認證”是為用戶建立一個其聲明的角色的過程惜辑,這個角色可以一個用戶、一個設(shè)備或者一個系統(tǒng)疫赎∈⒊牛“驗證”指的是一個用戶在你的應(yīng)用中能夠執(zhí)行某個操作。在到達授權(quán)判斷之前虚缎,角色已經(jīng)在身份認證過程中建立了撵彻。
它的設(shè)計是基于框架內(nèi)大范圍的依賴的,可以被劃分為以下幾塊实牡。
Web/Http 安全:這是最復(fù)雜的部分陌僵。通過建立 filter 和相關(guān)的 service bean 來實現(xiàn)框架的認證機制。當訪問受保護的 URL 時會將用戶引入登錄界面或者是錯誤提示界面创坞。
業(yè)務(wù)對象或者方法的安全:控制方法訪問權(quán)限的碗短。
AuthenticationManager:處理來自于框架其他部分的認證請求。
AccessDecisionManager:為 Web 或方法的安全提供訪問決策题涨。會注冊一個默認的偎谁,但是我們也可以通過普通 bean 注冊的方式使用自定義的 AccessDecisionManager。
AuthenticationProvider:AuthenticationManager 是通過它來認證用戶的纲堵。
UserDetailsService:跟 AuthenticationProvider 關(guān)系密切巡雨,用來獲取用戶信息的。
Shiro和Spring Security比較
Shiro比Spring更容易使用席函,實現(xiàn)和最重要的理解
Spring Security更加知名的唯一原因是因為品牌名稱
“Spring”以簡單而聞名铐望,但諷刺的是很多人發(fā)現(xiàn)安裝Spring Security很難
然而,Spring Security卻有更好的社區(qū)支持
Apache Shiro在Spring Security處理密碼學(xué)方面有一個額外的模塊
Spring-security 對spring 結(jié)合較好茂附,如果項目用的springmvc 正蛙,使用起來很方便。但是如果項目中沒有用到spring营曼,那就不要考慮它了乒验。
Shiro 功能強大、且 簡單蒂阱、靈活锻全。是Apache 下的項目比較可靠,且不跟任何的框架或者容器綁定蒜危,可以獨立運行
個人感想
shiro首選 虱痕,上手快 ,控制粒度可糙可細 辐赞,自由度高 ,我已經(jīng)拋棄了spring安全管理 投向shiro好多年硝训。