1. 程式人生 > >Shiro 與 Spring Security 的區別

Shiro 與 Spring Security 的區別

Shiro簡介

Apache Shiro是Java的一個安全框架。目前,使用Apache Shiro的人越來越多,因為它相當簡單,對比Spring Security,可能沒有Spring Security做的功能強大,但是在實際工作時可能並不需要那麼複雜的東西,所以使用小而簡單的Shiro就足夠了。對於它倆到底哪個好,這個不必糾結,能更簡單的解決專案問題就好了。


Shiro架構與功能介紹

1.認證與授權相關基本概念

兩個基本的概念

安全實體:系統需要保護的具體物件資料

許可權:系統相關的功能操作,例如基本的CRUD

Authentication:身份認證/登入,驗證使用者是不是擁有相應的身份;

Authorization:

授權,即許可權驗證,驗證某個已認證的使用者是否擁有某個許可權;即判斷使用者是否能做事情,常見的如:驗證某個使用者是否擁有某個角色。或者細粒度的驗證某個使用者對某個資源是否具有某個許可權;

Session Manager:會話管理,即使用者登入後就是一次會話,在沒有退出之前,它的所有資訊都在會話中;會話可以是普通JavaSE環境的,也可以是如Web環境的;

Cryptography:加密,保護資料的安全性,如密碼加密儲存到資料庫,而不是明文儲存;

Web Support:Web支援,可以非常容易的整合到Web環境;

Caching:快取,比如使用者登入後,其使用者資訊、擁有的角色/許可權不必每次去查,這樣可以提高效率;

Concurrency:shiro支援多執行緒應用的併發驗證,即如在一個執行緒中開啟另一個執行緒,能把許可權自動傳播過去;

Testing:提供測試支援;

Run As:允許一個使用者假裝為另一個使用者(如果他們允許)的身份進行訪問;

Remember Me:記住我,這個是非常常見的功能,即一次登入後,下次再來的話不用登入了。


2.Shiro四大核心功能:Authentication,Authorization,Cryptography,Session Management

Java安全框架Shiro和Spring Security對比

Shiro架構

3.Shiro三個核心元件:Subject, SecurityManager 和 Realms.

Subject:主體,代表了當前“使用者”,這個使用者不一定是一個具體的人,與當前應用互動的任何東西都是Subject,如網路爬蟲,機器人等;即一個抽象概念;所有Subject都繫結到SecurityManager,與Subject的所有互動都會委託給SecurityManager;可以把Subject認為是一個門面;SecurityManager才是實際的執行者;

SecurityManager:安全管理器;即所有與安全有關的操作都會與SecurityManager互動;且它管理著所有Subject;可以看出它是Shiro的核心,它負責與後邊介紹的其他元件進行互動,如果學習過SpringMVC,你可以把它看成DispatcherServlet前端控制器;

Realm:域,Shiro從從Realm獲取安全資料(如使用者、角色、許可權),就是說SecurityManager要驗證使用者身份,那麼它需要從Realm獲取相應的使用者進行比較以確定使用者身份是否合法;也需要從Realm得到使用者相應的角色/許可權進行驗證使用者是否能進行操作;可以把Realm看成DataSource,即安全資料來源。

Spring Security簡介

Spring Security是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Control ,DI:Dependency Injection 依賴注入)和AOP(面向切面程式設計)功能,為應用系統提供宣告式的安全訪問控制功能,減少了為企業系統安全控制編寫大量重複程式碼的工作。它是一個輕量級的安全框架,它確保基於Spring的應用程式提供身份驗證和授權支援。它與Spring MVC有很好地整合,並配備了流行的安全演算法實現捆綁在一起。安全主要包括兩個操作“認證”與“驗證”(有時候也會叫做許可權控制)。“認證”是為使用者建立一個其宣告的角色的過程,這個角色可以一個使用者、一個裝置或者一個系統。“驗證”指的是一個使用者在你的應用中能夠執行某個操作。在到達授權判斷之前,角色已經在身份認證過程中建立了。

它的設計是基於框架內大範圍的依賴的,可以被劃分為以下幾塊。

  • Web/Http 安全:這是最複雜的部分。通過建立 filter 和相關的 service bean 來實現框架的認證機制。當訪問受保護的 URL 時會將使用者引入登入介面或者是錯誤提示介面。

  • 業務物件或者方法的安全:控制方法訪問許可權的。

  • AuthenticationManager:處理來自於框架其他部分的認證請求。

  • AccessDecisionManager:為 Web 或方法的安全提供訪問決策。會註冊一個預設的,但是我們也可以通過普通 bean 註冊的方式使用自定義的 AccessDecisionManager。

  • AuthenticationProvider:AuthenticationManager 是通過它來認證使用者的。

  • UserDetailsService:跟 AuthenticationProvider 關係密切,用來獲取使用者資訊的。

Java安全框架Shiro和Spring Security對比

Shiro和Spring Security比較

  1. Shiro比Spring更容易使用,實現和最重要的理解

  2. Spring Security更加知名的唯一原因是因為品牌名稱

  3. “Spring”以簡單而聞名,但諷刺的是很多人發現安裝Spring Security很難

  4. 然而,Spring Security卻有更好的社群支援

  5. Apache Shiro在Spring Security處理密碼學方面有一個額外的模組

  6. Spring-security 對spring 結合較好,如果專案用的springmvc ,使用起來很方便。但是如果專案中沒有用到spring,那就不要考慮它了。

  7. Shiro 功能強大、且 簡單、靈活。是Apache 下的專案比較可靠,且不跟任何的框架或者容器繫結,可以獨立執行

相關推薦

Shiro Spring Security區別

Shiro簡介Apache Shiro是Java的一個安全框架。目前,使用Apache Shiro的人越來越多,因為它相當簡單,對比Spring Security,可能沒有Spring Security做的功能強大,但是在實際工作時可能並不需要那麼複雜的東西,所以使用小而簡單

shirospring security如何用自定義異常處理401

背景 現在是前後端分離的時代,後端必然要統一處理返回結果,比如定義一個返回物件 public class ResponseData<T> { /** * 統一返回碼 */ public String rtnCode; /*

ShiroSpring集成

open ons 過濾 周期 .cn def 訪問 tex bean 1.新建web工程,加入 Spring 和 Shiro 的 jar 包 2.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web

008-shirospring web項目整合【二】認證、授權、session管理

添加 ner != efi ebs ref private date err 一、認證 1、添加憑證匹配器 添加憑證匹配器實現md5加密校驗。 修改applicationContext-shiro.xml: <!-- realm -->

010-shirospring web項目整合【四】緩存Ehcache、Redis

principal eba view event ica inter element edi value 一、Ehcache shiro每次授權都會通過realm獲取權限信息,為了提高訪問速度需要添加緩存,第一次從realm中讀取權限數據,之後不再讀取,這裏Shiro和E

Spring bootSpring cloud 區別

springboot學習目錄 第一種: 第二種: Spring boot 是 Spring 的一套快速配置腳手架,可以基於spring boot 快速開發單個微服務,Spring Cloud是一個基於Spring Boot實現的雲應用開發工具; Spring boot專注於快速

Spring BootSpring區別

Spring Boot是最近這幾年才火起來的,那麼它到底與Spring有啥區別呢? 想了解區別,其實就是Spring Boot提供了哪些特徵: Spring Boot可以建立獨立的Spring應用程式; 內嵌瞭如Tomcat,Jetty和Undertow這樣的容器,也就

shirospring整合的配置(第一種)

web.xml的配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://j

apache shirospring整合、動態filterChainDefinitions、以及認證、授權

apache shiro是一個安全認證框架,和spring security相比,在於他使用了比較簡潔易懂的認證和授權方式。其提供的native-session(即把使用者認證後的授權資訊儲存在其自身提供Session中)機制,這樣就可以和HttpSession、EJB

安全框架ShiroSpring Security比較

Shiro 首先Shiro較之 Spring Security,Shiro在保持強大功能的同時,還在簡單性和靈活性方面擁有巨大優勢。 Shiro是一個強大而靈活的開源安全框架,能夠非常清晰的處理認證、授權、管理會話以及密碼加密。如下是它所具有的特點: 易於理解的 Ja

web專案shirospring整合 maven依賴及web配置詳解

依賴shiro的maven座標: <dependency> <groupId>org.apache.shiro</groupId> <artifa

Shiro入門-shirospring整合

引入jar <!-- shiro核心jar --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shi

shirospring整合中shiroFilter配置引數loginUrl及unauthorizedUrl含義小記

     shiro與spring整合的時候一般會使用shiro的Filter來代理網站的Filter。網上有很多關於配置shiroFilter的例子,但是感覺都沒有給出引數的具體含義。在此小小的記錄一下。 shiroFilter的xml配置如下: &l

一文帶你瞭解 OAuth2 協議 Spring Security OAuth2 整合!

OAuth 2.0 允許第三方應用程式訪問受限的HTTP資源的授權協議,像平常大家使用Github、Google賬號來登陸其他系統時使用的就是 OAuth 2.0 授權框架,下圖就是使用Github賬號登陸Coding系統的授權頁面圖: 類似使用 OAuth 2.0 授權的還有很多,本文將介紹 OAuth

實戰開發,使用 Spring Session Spring security 完成網站登入改造!!

上次小黑在文章中介紹了[四種分散式一致性 Session 的實現方式](https://mp.weixin.qq.com/s/8HgFYgrJDC3bi5MY0icJfg),在這四種中最常用的就是後端集中儲存方案,這樣即使 web 應用重啟或者擴容,Session 都沒有丟失的風險。 ![](https:/

spring security shiro的 簡單對比

spring security 介面 RequestMatcher 用於匹配路徑,對路徑做特殊的請求,類似於shiro的 抽象類 PathMatchingFilter,但是 RequestMatcher 作用粒度更細,例如可只另某些路徑受 csrf保護,spring se

web應用安全框架選型:Spring SecurityApache Shiro

一、 SpringSecurity 框架簡介 官網:https://projects.spring.io/spring-security/ 原始碼: https://github.com/spring-projects/spring-security/ Spring Security 是強大的,且容易定製

spring入門——applicationContextBeanFactory的區別

缺點 alt .get 執行 tex app blog actor cati     我們知道從applicationContext容器對象中如何獲取Bean了,其實spring框架還有另外一種獲取bean的方法:BeanFactory代碼如下:   BeanFactor

Spring Security and Shiro

tail -name val nbsp ots release encoder tar intercept Spring Security 看了第一篇的一部分,後幾個還沒看: http://www.cnblogs.com/javay/p/5822879.html http

Apache shiro的簡單介紹使用(spring整合使用)

簡單介紹 ace .cn album spring 整合 amp 介紹 pri http://pic.cnhubei.com/space.php?uid=1774&do=album&id=1343605http://pic.cnhubei.com/space