Spring4安全
在这篇文章中,我们将讨论有关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' }