关于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的区别内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • pagehelper插件显示total为-1或1的问题

    pagehelper插件显示total为-1或1的问题

    这篇文章主要介绍了pagehelper插件显示total为-1或1,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • springboot使用事物注解方式代码实例

    springboot使用事物注解方式代码实例

    这篇文章主要介绍了springboot使用事物注解方式代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java使用Runnable和Callable实现多线程的区别详解

    Java使用Runnable和Callable实现多线程的区别详解

    这篇文章主要为大家详细介绍了Java使用Runnable和Callable实现多线程的区别之处,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-07-07
  • Java读取OpenSSL生成的PEM公钥文件操作

    Java读取OpenSSL生成的PEM公钥文件操作

    这篇文章主要介绍了Java读取OpenSSL生成的PEM公钥文件操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • SpringBoot中如何打印Http请求日志

    SpringBoot中如何打印Http请求日志

    所有针对第三方的请求都强烈推荐打印请求日志,本文主要介绍了SpringBoot中如何打印Http请求日志,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • Java如何在Map中存放重复key

    Java如何在Map中存放重复key

    这篇文章主要介绍了Java如何在Map中存放重复key,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Java中SPI机制的实现详解

    Java中SPI机制的实现详解

    SPI(Service Provider Interface),是 JDK 内置的一种服务提供发现机制,可以用来启用框架扩展和替换组件,下面我们就来看看Java中SPI机制的具体实现
    2024-01-01
  • 详解如何给Sprintboot应用添加插件机制

    详解如何给Sprintboot应用添加插件机制

    这篇文章主要为大家介绍了如何给 Sprintboot 应用添加插件机制,文中有详细的解决方案及示例代码,具有一定的参考价值,需要的朋友可以参考下
    2023-08-08
  • Java开发SpringBoot集成接口文档实现示例

    Java开发SpringBoot集成接口文档实现示例

    这篇文章主要为大家介绍了Java开发SpringBoot如何集成接口文档的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • 一个Java配置文件加密解密工具类分享

    一个Java配置文件加密解密工具类分享

    在 JavaEE 配置文件中,例如 XML 或者 properties 文件,由于某些敏感信息不希望普通人员看见,则可以采用加密的方式存储,程序读取后进行解密
    2014-04-04

最新评论