Spring4安全

时间:2020-02-23 14:35:42  来源:igfitidea点击:

在这篇文章中,我们将讨论有关Spring Framework"安全性"模块的基础知识。
我们将在我的后续文章中开发一些简单和高级的示例。

如今,开发安全应用程序对于避免发生故障,窃取或者入侵我们的机密数据或者未经授权的访问至关重要。
我们可以使用Spring Security Module开发安全应用程序,以限制对我们应用程序的访问。

Spring4安全

最初,Spring Framework使用一个单独的第三方框架来支持Spring Applications Security:Acegi Security。
但是开发安全应用程序并不容易,并且存在一些缺点。

Spring Acegi Security的缺点

  • 很多XML配置
  • 学习曲线过多
  • 不支持注释

为了避免所有这些问题,Spring团队(Pivotal团队)已将" Acegi Security"框架作为" Spring Security"模块集成到Spring框架中。

Spring 4 Framework具有以下模块,可为基于Spring的应用程序提供安全性:

  • Spring安全
  • Spring安全SAML
  • Spring安全OAuth
  • Spring Security Kerberos
  • Spring Cloud安全性

在Spring Framework中," Spring Security"模块是其余Spring Security模块的基本模块。

在本文中,我们将讨论" Spring Security"模块的一些基础知识。
我们将在以后的文章中讨论一些简单和高级的实时示例。

一旦我们在以后的帖子中熟悉了" Spring Security"模块,我们将回到四个模块的其余部分。

什么是Spring Security?

Spring Security是Spring Framework的安全性模块之一。
它是一个Java SE/Java EE安全框架,为Web应用程序或者企业应用程序提供身份验证,授权,SSO和其他安全功能。

Spring Security官方:https://projects.spring.io/spring-security/

Spring Security Documentation:https://docs.spring.io/spring-security/site/docs/

Spring Security Module的最新稳定版本是" 4.0.2.RELEASE"

Spring 4安全功能

Spring 3.x安全框架提供以下功能:

  • 身份验证和授权。

  • 支持BASIC,摘要和基于表单的身份验证。

  • 支持LDAP认证。

  • 支持OpenID认证。

  • 支持SSO(单点登录)实施。

  • 支持跨站点请求伪造(CSRF)实施。

  • 通过HTTP Cookies支持"记住我"功能。

  • 支持ACL的实施

  • 支持"通道安全性",这意味着自动在HTTP和HTTPS之间切换。

  • 支持I18N(国际化)。

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

  • 使用Spring WebFlow Framework支持流程授权。

  • 使用Spring Web Services支持WS-Security。

  • 同时支持XML配置和注释。
    很少或者最少的XML配置。

Spring 4.x安全框架支持以下新功能:

  • 支持WebSocket安全。

  • 支持Spring数据集成。

  • CSRF令牌参数解析器。

在接下来的文章中,我们将开发一些简单的示例来演示这些功能。

Spring4安全级别

Spring Security支持以下两个授权级别

  • 方法级别授权
  • URL级别授权

注意:Spring Security通过使用AOP(面向方面的编程)来支持"方法级安全性"。
Spring Security通过使用Servlet过滤器来支持" URL级安全性"。

Spring 4安全性优势

Spring 4 Security Framework具有以下优点:

  • 开源安全框架

  • 灵活,易于开发和对应用程序进行单元测试

  • 声明式安全编程

  • 易于扩展

  • 易于维护

  • 充分利用Spring DI(依赖注入)和AOP。

  • 我们可以开发松耦合应用程序。

Spring 4安全子模块

Spring 4安全模块再次分为11个子模块。
它具有以下子模块:

  • Spring安全核心模块
  • Spring安全配置模块
  • Spring Security Web模块
  • Spring安全标签库模块
  • Spring Security AspectJ模块
  • Spring Security ACL模块
  • Spring Security LDAP模块
  • Spring Security OpenID模块
  • Spring Security CAS模块
  • Spring Security密码学模块
  • Spring Security远程模块

在Spring Framework的Security子模块中,Spring Security Core子模块是其余所有Security子模块的基本模块。

为了支持这11个Spring Security模块,Spring框架具有以下jar:

  • spring-security-core-4.0.2.RELEASE.jar
  • spring-security-config-4.0.2.RELEASE.jar
  • spring-security-web-4.0.2.RELEASE.jar
  • spring-security-taglibs-4.0.2.RELEASE.jar
  • spring-security-aspects-4.0.2.RELEASE.jar
  • spring-security-acl-4.0.2.RELEASE.jar
  • spring-security-ldap-4.0.2.RELEASE.jar
  • spring-security-openid-4.0.2.RELEASE.jar
  • spring-security-cas-4.0.2.RELEASE.jar
  • spring-security-crypto-4.0.2.RELEASE.jar
  • spring-security-remoting-4.0.2.RELEASE.jar

几乎所有的Spring Security JAR都有类似的Maven或者Gradle依赖项,如下所示:

Spring安全专家

<dependencies>
  <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>[Spring Security Module Name Here]</artifactId>
      <version>4.0.2.RELEASE</version>
  </dependency>
</dependencies>

Spring安全摇篮

dependencies {
compile 
'org.springframework.security:[Spring Security Module Name Here]:4.0.2.RELEASE'
}

pom.xml

<dependencies>
  <dependency>
      <groupId>org.springframework.security</groupId>
      <artifactId>spring-security-core</artifactId>
      <version>4.0.2.RELEASE</version>
  </dependency>
</dependencies>

build.gradle

dependencies {
  compile 'org.springframework.security:spring-security-core:4.0.2.RELEASE'
}