Spring Security

1什么是Spring Security?

Spring Security为基于Java EE的企业软件应用程序提供全面的安全服务。特别强调支持使用Spring Framework构建的项目,Spring Framework是用于企业软件开发的领先Java EE解决方案。如果您没有使用Spring开发企业应用程序,我们热烈鼓励您仔细研究它。对Spring的一些熟悉 - 特别是依赖注入原则 - 将帮助您更轻松地熟悉Spring Security。

人们使用Spring Security的原因有很多,但大多数人在找到Java EE的Servlet规范或EJB规范的安全特性后,都没有深入了解典型企业应用场景所需的深度。在提到这些标准的同时,重要的是要认识到它们在WAR或EAR级别不可移植。因此,如果切换服务器环境,在新的目标环境中重新配置应用程序的安全性通常需要很多工作。使用Spring Security克服了这些问题,并且还为您带来了许多其他有用的,可自定义的安全功能。

正如您可能知道应用程序安全性的两个主要方面是“身份验证”和“授权”(或“访问控制”)。这是Spring Security的两大主要领域。“认证”是建立委托人的过程是他们自称的人(“委托人”通常指的是用户,设备或其他可以在您的应用程序中执行动作的系统)。“授权”是指决定的过程是否允许校长在您的申请中执行某项操作。为了达到需要授权决定的地步,委托人的身份已经由认证过程确定。这些概念很常见,并不完全针对Spring Security。

在认证级别,Spring Security支持广泛的认证模型。这些认证模式大多由第三方提供,或者由相关标准组织(如互联网工程任务组)开发。另外,Spring Security还提供了自己的一套认证功能。具体而言,Spring Security目前支持与所有这些技术的认证集成:

  • HTTP BASIC认证头(基于IETF RFC的标准)
  • HTTP摘要认证头(基于IETF RFC的标准)
  • HTTP X.509客户端证书交换(基于IETF RFC的标准)
  • LDAP(跨平台认证需求的一种非常常见的方法,特别是在大型环境中)
  • 基于表单的认证(用于简单的用户界面需求)
  • OpenID认证
  • 基于预先建立的请求标题的认证(例如Computer Associates Siteminder)
  • Jasig中央身份验证服务(也称为CAS,这是一种流行的开源单点登录系统)
  • 远程方法调用(RMI)和HttpInvoker(Spring远程协议)的透明身份验证上下文传播
  • 自动“记住我”身份验证(这样您可以勾选一个框以避免在预定时间段内重新验证)
  • 匿名身份验证(允许每个未经身份验证的呼叫自动采用特定的安全身份)
  • 运行身份验证(如果一次呼叫应该继续使用不同的安全身份,这很有用)
  • Java认证和授权服务(JAAS)
  • Java EE容器认证(因此如果需要,您仍然可以使用容器管理认证)
  • Kerberos的
  • Java开源单点登录(JOSSO)*
  • OpenNMS网络管理平台*
  • AppFuse *
  • AndroMDA *
  • Mule ESB *
  • 直接Web请求(DWR)*
  • Grails *
  • 挂毯*
  • JTrac *
  • Jasypt *
  • 滚筒 *
  • 弹性路径*
  • Atlassian人群*
  • 您自己的认证系统(见下文)

(*表示由第三方提供

许多独立软件供应商(ISV)都采用Spring Security,因为这种灵活的身份验证模型的选择非常重要。这样做可以让他们快速地将他们的解决方案与他们最终客户需要的任何内容集成起来,而无需进行大量工程或要求客户改变其环境。如果上述认证机制都不符合您的需求,Spring Security是一个开放平台,编写您自己的认证机制非常简单。Spring Security的许多公司用户需要与不遵循任何特定安全标准的“传统”系统集成,而Spring Security很高兴能够与这样的系统“很好地发挥”。

无论身份验证机制如何,Spring Security都提供了一套深层次的授权功能。有三个主要的感兴趣领域:授权Web请求,授权是否可以调用方法并授权访问单个域对象实例。为帮助您理解这些差异,请分别考虑Servlet规范Web模式安全性,EJB容器托管安全性和文件系统安全性中的授权功能。Spring Security在所有这些重要领域提供了深入的功能,我们将在本参考指南的后面部分探讨这些功能。

2历史

Spring Security在2003年底开始称为“春季Acegi安全系统”。Spring Developers的邮件列表上提出了一个问题,询问是否对基于Spring的安全实现给予了任何考虑。当时Spring社区的规模相对较小(特别是与今天的规模相比),而Spring本身的确只是从2003年初开始作为SourceForge项目而存在。对这个问题的回应是它是一个有价值的领域,尽管缺乏的时间目前阻止了它的探索。

考虑到这一点,构建了一个简单的安全实现,而不是发布。几个星期后,Spring社区的另一位成员询问了安全问题,并在当时向他们提供了这些代码。接下来还有其他几个要求,到2004年1月,大约有20个人在使用这些代码。这些先锋用户与其他人一起提出了一个建议SourceForge项目是有序的,该项目于2004年3月正式成立。

在那些早期,该项目没有任何自己的认证模块。集装箱安全管理被用于认证过程,而Acegi Security则专注于授权。这在一开始就很合适,但随着越来越多的用户请求额外的容器支持,容器特定身份验证领域接口的基本限制变得清晰起来。还有一个相关的问题,即向容器的类路径添加新的JAR,这是最终用户混淆和错误配置的常见原因。

随后引入了Acegi安全特定的认证服务。大约一年后,Acegi Security成为Spring Framework的正式子项目。1.0.0最终版本于2006年5月发布 - 经过两年半以上的众多生产软件项目的积极使用以及数百次改进和社区贡献。

Acegi Security于2007年底成为春季投资组合项目,并更名为“春季安全”。

今天,Spring Security拥有一个强大且活跃的开源社区。在支持论坛上有数千条关于Spring Security的消息。有一个积极的核心开发人员从事代码本身的工作,同时也是一个活跃的社区,他们也经常分享补丁和支持他们的同行。

3版本编号

了解Spring Security发行版的工作原理非常有用,因为它可以帮助您确定迁移到项目未来版本所涉及的工作(或缺乏)。每个版本使用一个标准的整数三元组:MAJOR.MINOR.PATCH。目的是MAJOR版本不兼容,API的大规模升级。MINOR版本应该在很大程度上保留与旧版次版本的源代码和二进制兼容性,认为可能会有一些设计更改和不兼容的更新。PATCH级别应该完全兼容,前后颠倒,可能的例外是修改错误和缺陷的更改。

您受到更改影响的程度取决于您的代码的集成程度。如果您正在进行大量定制,则与使用简单名称空间配置相比,您可能会受到更多的影响。

在推出新版本之前,您应该始终彻底测试您的应用程序。

4获得Spring Security

你可以通过几种方式获得Spring Security。您可以从主要的Spring Security页面下载一个打包发布,从Maven Central存储库下载单独的jar(或者用于快照和里程碑版本的Spring Maven存储库),或者您可以自己从源代码构建项目。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值