Spring Security - 简介



什么是 Spring Security?

Spring Security 是 Spring 项目或模块之一,用于保护基于 Spring 的应用程序。Spring Security 为我们在应用程序中实现身份验证和授权提供了许多内置功能。我们可以使用这些功能并进行修改来快速保护应用程序。除此之外,Spring Security 还允许对前面提到的功能进行大量自定义,以实现我们自己的复杂身份验证和授权。

除了提供各种内置的身份验证和授权选项外,Spring Security 还允许我们根据需要自定义身份验证过程。从自定义登录页面到我们自己定制的身份验证提供程序和身份验证过滤器,我们可以几乎自定义身份验证过程的各个方面。我们可以定义自己的身份验证过程,范围从使用用户名和密码的基本身份验证到使用令牌和 OTP 的复杂的两因素身份验证。此外,我们可以使用各种数据库——关系型和非关系型,使用各种密码编码器,锁定恶意用户帐户等等。

身份验证和授权

身份验证和授权是 Spring Security 的两个主要组成部分。

  • 身份验证 − 身份验证是为了确保用户或客户端就是他们声称的那个人。Spring Security 提供了许多方法来执行身份验证。Spring Security 支持基本身份验证、LDAP 身份验证、JDBC 身份验证等。

  • 授权 − 授权确保用户是否具有执行该操作的权限。如果我们的应用程序是一个复杂的应用程序,具有不同类型的用户,例如管理员、普通用户和其他特权较低的用户,我们需要在应用程序中维护访问控制。例如,访客用户不应该能够访问管理员内容。因此,为了控制对应用程序中各种资源的访问,我们需要检查用户是否具有访问该资源的权限。Spring Security 支持角色、声明等来提供用户级别的授权。

Spring Security 支持大量的身份验证模型。大多数这些身份验证模型都是由第三方或互联网工程任务组 (IETF) 作为标准机构开发的。能够与广泛的第三方身份验证模型集成,Spring Security 在开发人员中非常受欢迎,可以集成到他们的项目中。Spring 也提供它自己的身份验证功能。以下列表显示了 Spring Security 支持的各种身份验证方法。

  • HTTP 基本身份验证头

  • HTTP摘要身份验证头

  • HTTP X.509 客户端证书交换

  • LDAP

  • 基于表单的身份验证

  • OpenID 身份验证

  • 基于预先建立的请求头的身份验证

  • JA-SIG 中央身份验证服务,一个开源单点登录系统

  • 远程方法调用 (RMI) 和 HttpInvoker 的透明身份验证上下文传播

  • 记住我

  • 匿名身份验证

  • Run-as 身份验证

  • Java 身份验证和授权服务 (JAAS)

  • JEE 容器身份验证

  • Kerberos

  • Java 开源单点登录 (JOSSO)

  • OpenNMS 网络管理平台

  • AppFuse

  • AndroMDA

  • Mule ESB

  • 直接 Web 请求 (DWR)

  • Grails

  • Tapestry

  • JTrac

  • Jasypt

  • Roller

  • Elastic Path

  • Atlassian Crowd

我们也可以将自己的自定义身份验证机制与 Spring Security 集成。

Spring Security 的历史

Spring Security 最初于 2003 年后期作为用于 Spring 的 Acegi 安全系统启动,这是一个简单的基于 Spring 的安全实现。后来,随着 Spring 社区成员询问现有的框架,它被分配给社区成员之一来工作,到 2004 年 1 月,一个由 20 多人组成的团队开始参与这个项目,该项目后来于 2004 年 3 月成为一个 SourceForge 项目。最初,Spring Security 没有自己的身份验证模块,它完全依赖于容器管理的安全,而 Acegi 安全系统只专注于授权模块。

在接下来的 2005 年,引入了 Acegi Security 特定的身份验证服务,Acegi 安全系统成为 Spring 的官方子项目。2006 年 5 月,在众多生产软件中使用、社区改进和错误修复之后,发布了 1.0.0 版本。到 2007 年底,Acegi 安全系统更名为 Spring Security,并成为 Spring 官方产品组合项目。

广告
© . All rights reserved.