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

转载于https://blog.csdn.net/zzzzzzzxp/article/details/105505941

Shiro对比Spring-Security
一.什么是Shiro?
官网介绍:https://github.com/apache/shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
二.什么是Spring-Security?
官网介绍:https://spring.io/projects/spring-security

Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架。它是用于保护基于Spring的应用程序的实际标准。
Spring Security是一个框架,致力于为Java应用程序提供身份验证和授权。与所有Spring项目一样,Spring Security的真正强大之处在于可以轻松扩展以满足自定义要求
三.shiro的主要功能、核心组件
3.1 主要功能
Authentication:身份认证/登录,验证用户是不是拥有相应的身份;
Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限;
Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的;
Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储;
3.2核心组件
Subject:subject:即“当前操作用户”。但是,在Shiro中,Subject这一概念并不仅仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。它仅仅意味着“当前跟软件交互的东西”。
SecuritryManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过SecurityManager来管理内部组件实例,并通过它来提供安全管理的各种服务。
Realm:Realm充当了Shiro与应用安全数据间的“桥梁”或者“连接器”。也就是说,当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。
可以将Realm类比为SpringMvc中的Dao层(比他更加安全)。
四.优缺点对比
4.1 shiro的优点
shiro的代码更易于阅读,且使用更加简单;
shiro可以用于非web环境,不跟任何框架或容器绑定,独立运行;
4.2 shiro的缺点
授权第三方登录需要手动实现;
4.3 spring-security的优点
spring-security对spring结合较好,项目是spring-boot等搭建的,使用起来更加方便;
有更好的spring社区进行支持;
支持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

©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页