Spring Security系列教程01--初识Spring Security

初识Spring Security

一、Spring Security概念

Spring Security是一个功能强大且高度可定制的,主要负责为Java程序提供声明式的 身份验证和访问控制 的安全框架。其前身是Acegi Security,后来被收纳为Spring的一个子项目,并更名为了Spring Security。
Spring Security的底层主要是 基于 Spring AOP 和 Servlet 过滤器 来实现安全控制,它提供了全面的安全解决方案,同时授权粒度可以在 Web请求级和方法调用级 来处理身份确认和授权。

二、Spring Security功能

核心功能:

  • 认证:解决“你是谁”的问题
  • 授权:解决“你能干什么”的问题,支持基于URL的请求授权,方法访问的授权,对象访问授权
  • 防护攻击:解决系统安全问题
  • 加密功能:用户密码加密
  • 会话管理:对Session进行管理
  • RememberMe功能:实现记住我功能,是token持久化

三、Spring Security支持对身份认证功能

学习Spring Security除了要掌握核心功能外,还需要对身份认证简单了解。Spring Security的身份验证模式大多数是由第三方提供的。
说起Spring Security不得不提另外一个安全框架,Shiro安全框架。

四、Shiro起源

Shiro安全框架是Apache下的一个开源框架,提供了身份验证、授权、密码学和会话管理等功能。它的前身是 JSecurity,2004 年,Les Hazlewood 和 Jeremy Haile 创办了 Jsecurity。当时他们找不到适用于应用程序级别的合适 Java 安全框架,同时又对 JAAS 非常失望,于是就搞了Shiro这个框架。
2004 年到 2008 年期间,JSecurity 托管在 SourceForge 上,贡献者包括 Peter Ledbrook、Alan Ditzel 和 Tim Veil。
2008 年,JSecurity 项目贡献给了 Apache 软件基金会(ASF),并被接纳成为 Apache Incubator 项目,由导师管理,目标是成为一个顶级 Apache 项目。期间,Jsecurity 曾短暂更名为 Ki,随后因商标问题被社区更名为“Shiro”。随后项目持续在 Apache Incubator 中孵化,并增加了贡献者 KalleKorhonen。
2010 年 7 月,Shiro 社区发布了 1.0 版,随后社区创建了其项目管理委员会,并选举 Les Hazlewood 为主席。2010 年 9 月 22 日,Shrio 成为 Apache 软件基金会的顶级项目(TLP)。

五、Shiro功能

Apache Shiro 也是一个强大而灵活的开源安全框架,它干净利落地处理身份认证,授权,企业会话管理和加密。Apache Shiro 的首要目标是易于使用和理解,因为安全有时候是很复杂的,甚至是痛苦的,但其实没必要这样。框架应该尽可能掩盖复杂的地方,暴露一个干净而直观的 API,来简化开发人员在应用程序安全上所花费的时间。
核心功能:
-Authentication:简称为“登录”,

  • Authorization:访问控制的过程
  • Session Message:会话管理
  • Cryptography:通过加密算法保持数据安全
    除此之外,Shiro 也提供了额外的功能,来解决在不同环境下所面临的安全问题:
  • Web Support:web支持的API能够轻松的保护Web应用程序
  • Caching:缓存是用来保证操作快速而又高效的
  • Concurrency:Apache Shiro 利用它的并发特性来支持多线程应用程序
  • Testing:测试功能来帮助编写单元测试和集成测试
  • Run As:一个允许用户以另一个用户身份(如果允许) 运行的功能,有时候在管理脚本时很有用
  • Remember Me:在会话中记住用户的身份,这样用户只需要在强制登录时登录

六、Shiro的特点

Shiro 框架具有直观、易用 等特性,同时也能提供了健壮的安全性,虽然它的功能不如 Spring Security 那么强大,但是在常规的企业级应用中,其实也够用了。

七、Spring Security框架和Shiro框架比较

Spring Secuirty优点:

  1. 由于Spring Security是基于Spring开发的,所以契合度要比Shiro好
  2. Spring Security的功能比Shiro的强大,尤其是在安全防护方面
  3. Spring Security社区资源比Shiro更多
  4. Spring Security具备良好的拓展性,可以满足自定义要求
  5. Spring Security对OAuth2框架支持更好

Spring Security缺点:

  1. Shiro是一个轻量、简单、易于集成的老牌安全框架,而且使用流程简单清晰;反观Spring Security,则属于是重量级、配置繁琐、学习使用门槛高的安全框架。
  2. Shiro依赖性低,不需要任何框架和容器,可以独立运行,而Spring Security需要依赖Spring容器。

现在常见的安全技术栈

  • SSM + Shiro
  • Spring Boot/Spring Cloud + Spring Security

就目前而言,Shiro 最大的问题在于和 Spring 家族的产品进行整合时较为不便。在 Spring Boot 推出的很长一段时间里,Shiro 都没有提供相应的 starter,后来虽然有一个 shiro-spring-boot-web-starter 出来,但配置并没有简化多少。所以在 Spring Boot/Spring Cloud 技术栈的微服务项目中,Shiro 几乎不存在优势。
但如果你是进行传统的 SSM 项目开发,而不是微服务项目,那么无疑使用 Shiro 是最方便省事的,因为它足够简单,足够轻量级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值