关于SpringSecurity简介以及和Shiro的区别

 更新时间:2023年07月11日 10:47:10   作者:光阴似键  
这篇文章主要介绍了关于SpringSecurity简介以及和Shiro的区别,在Java应用安全领域,Spring Security会成为被首先推崇的解决方案,就像我们看到服务器就会联想到Linux一样顺理成章,需要的朋友可以参考下

Spring Security简介

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

中文文档: https://www.springcloud.cc/spring-security.html    

Spring Security 的前身是 Acegi Security,在被收纳为Spring子项目后正式更名为Spring Security

在笔者成书时,Spring Security已经升级到5.1.3.RELEASE版本,加入了原生OAuth2.0框架,支持更加现代化的密码加密方式。可以预见,在Java应用安全领域,Spring Security会成为被首先推崇的解决方案,就像我们看到服务器就会联想到Linux一样顺理成章。

应用程序的安全性通常体现在两个方面:认证和授权。

认证是确认某主体在某系统中是否合法、可用的过程。这里的主体既可以是登录系统的用户,也可以是接入的设备或者其他系统。授权是指当主体通过认证之后,是否允许其执行某项操作的过程。

这些概念并非Spring Security独有,而是应用安全的基本关注点。Spring Security可以帮助我们更便捷地完成认证和授权,Spring Security 支持广泛的认证技术,这些认证技术大多由第三方或相关标准组织开发。Spring Security已经集成的认证技术如下:

  • HTTP BASIC authentication headers:一个基于IETF RFC的标准。
  • HTTP Digest authentication headers:一个基于IETF RFC的标准。
  • HTTP X.509 client certificate exchange:一个基于IETF RFC的标准。
  • LDAP:一种常见的跨平台身份验证方式。
  • Form-based authentication:用于简单的用户界面需求。
  • OpenID authentication:一种去中心化的身份认证方式。
  • Authentication based on pre-established request headers:类似于 Computer Associates SiteMinder,一种用户身份验证及授权的集中式安全基础方案。
  • JasigCentral Authentication Service:单点登录方案。
  • Transparent authentication context propagation for Remote Method Invocation(RMI)and HttpInvoker:一个Spring远程调用协议。
  • Automatic "remember-me" authentication:允许在指定到期时间前自行重新登录系统。
  • Anonymous authentication:允许匿名用户使用特定的身份安全访问资源。
  • Run-as authentication:允许在一个会话中变换用户身份的机制。
  • Java Authentication and Authorization Service:JAAS:Java验证和授权API。
  • Java EE container authentication:允许系统继续使用容器管理这种身份验证方式。
  • Kerberos:一种使用对称密钥机制,允许客户端与服务器相互确认身份的认证协议。

除此之外,Spring Security还引入了一些第三方包,用于支持更多的认证技术,如JOSSO等。如果所有这些技术都无法满足需求,则Spring Security允许我们编写自己的认证技术。因此,在绝大部分情况下,当我们有Java应用安全方面的需求时,选择Spring Security往往是正确而有效的。

Internet工程任务组(Internet Engineering Task Force,IETF)是推动Internet标准规范制定的最主要的组织。请求注解(Request For Comments,RFC)包含大多数关于Internet的重要文字资料,被称为“网络知识圣经”。

在授权上,Spring Security不仅支持基于URL对Web的请求授权,还支持方法访问授权、对象访问授权等,基本涵盖常见的大部分授权场景。

很多时候,一个系统的安全性完全取决于系统开发人员的安全意识。例如,在我们从未听过SQL注入时,如何意识到要对SQL注入做防护?关于Web系统安全的攻击方式非常多,诸如XSS、CSRF等,未来还会暴露出更多的攻击方式,我们只有在充分了解其攻击原理后,才能提出完善而有效的防护策略。在笔者看来,学习Spring Security并非局限于降低Java应用的安全开发成本,通过Spring Security了解常见的安全攻击手段以及对应的防护方法也尤为重要,这些是脱离具体开发语言而存在的。

Spring Security和Shiro的区别

1.相同点

  • ①认证功能
  • ②授权功能
  • ③加密功能
  • ④会话管理
  • ⑤缓存支持
  • ⑥rememberMe功能 … …

2.不同点

  • ①Spring Security是一个重量级的安全管理框架;Shiro则是一个轻量级的安全管理框架
  • ②Spring Security 基于Spring开发,项目若使用Spring作为基础,配合Spring Security 做权限更便捷,而Shiro需要和Spring 进行整合开发;
  • ③Spring Security 功能比Shiro更加丰富些,例如安全维护方面;
  • ④Spring Security 社区资源相对于Shiro更加丰富;
  • ⑤Shiro 的配置和使用比较简单,Spring Security 上手复杂些;
  • ⑥Shiro 依赖性低,不需要任何框架和容器,可以独立运行, Spring Security依赖Spring容器;
  • ⑦Shiro 不仅仅可以使用在web中,它可以工作在任何应用环境中。在集群会话时Shiro最重要的一个好处或许就是它的会话是独立于容器的

到此这篇关于关于SpringSecurity简介以及和Shiro的区别的文章就介绍到这了,更多相关SpringSecurity和Shiro的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java仿windows记事本小程序

    java仿windows记事本小程序

    这篇文章主要为大家详细介绍了java仿windows记事本小程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • java 使用正则表达式去除前后空格

    java 使用正则表达式去除前后空格

    这篇文章主要介绍了java 使用正则表达式去除前后空格,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • mybatis 使用jdbc.properties文件设置不起作用的解决方法

    mybatis 使用jdbc.properties文件设置不起作用的解决方法

    这篇文章主要介绍了mybatis 使用jdbc.properties文件设置不起作用的解决方法,需要的朋友可以参考下
    2018-03-03
  • Java--装箱和拆箱详解

    Java--装箱和拆箱详解

    本篇文章主要介绍了详解Java 自动装箱与拆箱的实现原理,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-07-07
  • java获取用户输入的字符串方法

    java获取用户输入的字符串方法

    今天小编就为大家分享一篇java获取用户输入的字符串方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 带你入门Java的方法

    带你入门Java的方法

    这篇文章主要介绍了java基础之方法详解,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-07-07
  • Spring AOP使用接口方式实现

    Spring AOP使用接口方式实现

    本文主要介绍了Spring AOP使用接口方式实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Spring和Hibernate的整合操作示例

    Spring和Hibernate的整合操作示例

    这篇文章主要介绍了Spring和Hibernate的整合操作,结合实例形式详细分析了Spring和Hibernate的整合具体步骤、实现方法及相关操作注意事项,需要的朋友可以参考下
    2020-01-01
  • Springboot ApplicationRunner的使用解读

    Springboot ApplicationRunner的使用解读

    这篇文章主要介绍了Springboot ApplicationRunner的使用解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • list转tree和list中查找某节点下的所有数据操作

    list转tree和list中查找某节点下的所有数据操作

    这篇文章主要介绍了list转tree和list中查找某节点下的所有数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09

最新评论