java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringSecurity和Shiro的区别

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

作者:光阴似键

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

您可能感兴趣的文章:
阅读全文