安全框架之spring-security与shiro的对比

Shiro对比Spring-Security

一.什么是Shiro?

官网介绍:https://github.com/apache/shiro

  • Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

二.什么是Spring-Security?

官网介绍:https://spring.io/projects/spring-security

  1. Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。
  2. Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求

三.shiro的主要功能、核心组件

3.1 主要功能

  1. Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
  2. Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
  3. Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
  4. Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;

3.2核心组件

  1. Subject:subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。
  2. SecuritryManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
  3. Realm:Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
  • 可以将Realm类比为SpringMvc中的Dao层(比他更加安全)。

四.优缺点对比

4.1 shiro的优点

  1. shiro的代码更易于阅读,且使用更加简单;
  2. shiro可以用于非web环境,不跟任何框架或容器绑定,独立运行;

4.2 shiro的缺点

  • 授权第三方登录需要手动实现;

4.3 spring-security的优点

  1. spring-security对spring结合较好,项目是spring-boot等搭建的,使用起来更加方便;
  2. 有更好的spring社区进行支持;
  3. 支持oauth授权,官方网站:https://spring.io/projects/spring-security-oauth;

4.4 spring-security的缺点

  • 对于shiro比较复杂,没有shiro清晰易懂;

小结:新手的小伙伴可以从shiro入手,比较好理解,以上均属个人理解,可能有偏差,希望有不正确之处,大家能够指出来,共同探讨交流
下面是个人写的两个基于shiro和spring-security的小例子,欢迎学习交流,后期详细介绍security和shiro的使用

https://gitee.com/zzzxp/Shiro.git
https://gitee.com/zzzxp/spring-security.git

发布了1 篇原创文章 · 获赞 6 · 访问量 35

猜你喜欢

转载自blog.csdn.net/zzzzzzzxp/article/details/105505941
今日推荐