Spring Security 教程
在这篇文章中,我们将讨论Spring框架 “安全性”模块基础知识。我们将在即将发布的帖子中开发一些简单而先进的示例。
现在,开发安全应用程序是避免故障,窃取或黑客攻击我们的机密数据或未经授权访问的非常重要的方面。我们可以使用Spring Security Module开发Secure应用程序来限制对我们的应用程序的访问。
目录[ 隐藏 ]
春天4安全
最初,Spring Framework使用单独的第三方框架来支持Spring Applications Security:Acegi Security。但是开发安全应用程序并不容易,并且有一些缺点。
Spring Acegi Security的缺点
- 很多XML配置
- 学习曲线太多了
- 不支持注释
为了避免所有这些问题,Spring Team(Pivotal Team)将“Acegi Security”框架集成到Spring Framework中作为“Spring Security”模块。
Spring 4 Framework具有以下模块来为基于Spring的应用程序提供安全性:
- 春季安全
- Spring Security SAML
- Spring Security OAuth
- Spring Security Kerberos
- Spring Cloud Security
在Spring Framework中,“Spring Security”模块是其他Spring Security模块的基础模块。
我们将在本文中讨论“Spring Security”模块的一些基础知识。我们将在即将发布的帖子中讨论一些简单而先进的实时示例。
一旦我们在即将发布的帖子中熟悉“Spring Security”模块,我们将回到其余四个模块。
什么是Spring Security?
Spring Security是Spring Framework的安全模块之一。它是一个Java SE / Java EE安全框架,为Web应用程序或企业应用程序提供身份验证,授权,SSO和其他安全功能。
Spring Security官方网站:http://projects.spring.io/spring-security/
Spring Security Documentation网站:http://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 Cookie支持“记住我”功能。
- 支持ACL的实现
- 支持“通道安全”,这意味着在HTTP和HTTPS之间自动切换。
- 支持I18N(国际化)。
- 支持JAAS(Java身份验证和授权服务)。
- 使用Spring WebFlow Framework支持流程授权。
- 使用Spring Web Services支持WS-Security。
- 支持XML配置和注释。非常少或最小的XML配置。
Spring 4.x安全框架支持以下新功能:
- 支持WebSocket安全性。
- 支持Spring数据集成。
- CSRF令牌参数解析器。
我们将在后续帖子中开发一些简单的示例来演示这些功能。
Spring 4安全级别
Spring Security支持以下两个授权级别
- 方法级别授权
- URL级别授权
注意
Spring Security通过使用AOP(面向方面编程)支持“方法级安全性”,这意味着通过Aspects。Spring Security通过使用Servlet过滤器支持“URL级别安全性”。
Spring 4安全优势
Spring 4安全框架提供以下优点:
- 开源安全框架
- 灵活,易于开发和单元测试应用程序
- 声明性安全编程
- 易于扩展
- 易于维护
- 充分利用Spring DI(依赖注入)和AOP。
- 我们可以开发松散耦合应用程序。
Spring 4安全子模块
Spring 4安全模块又分为11个子模块。它有以下子模块:
- Spring安全核心模块
- Spring安全配置模块
- Spring Security Web模块
- Spring安全标记库模块
- Spring Security AspectJ模块
- Spring安全ACL模块
- Spring Security LDAP模块
- Spring Security OpenID模块
- Spring Security CAS模块
- Spring Security Cryptography Module
- Spring Security Remoting模块
在Spring Framework的安全子模块中,Spring Security核心子模块是所有安全子模块的基础模块。
为了支持这11个Spring Security模块,Spring框架有以下jar:
- 弹簧安全核心4.0.2.RELEASE.jar
- 弹簧安全配置,4.0.2.RELEASE.jar
- 弹簧安全网络4.0.2.RELEASE.jar
- 弹簧安全标签库,4.0.2.RELEASE.jar
- 弹簧安全方面,4.0.2.RELEASE.jar
- 弹簧安全ACL-4.0.2.RELEASE.jar
- 弹簧安全LDAP的4.0.2.RELEASE.jar
- 弹簧安全OpenID的4.0.2.RELEASE.jar
- 弹簧安全-CAS-4.0.2.RELEASE.jar
- 弹簧安全加密4.0.2.RELEASE.jar
- 弹簧安全远程-4.0.2.RELEASE.jar
几乎所有Spring Security JAR都有类似的Maven或Gradle依赖项,如下所示:
Spring Security Maven
<dependencies>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>[Spring Security Module Name Here]</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
</dependencies>
Spring Security Gradle
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'
}
这就是Spring 4安全模块的基础知识。是时候开始开发一些简单的例子来探索Spring Security模块了。
我们将使用Spring STS Suite IDE,Maven或Gradle Build Tool和Java 7/8来开发我们的应用程序。
如果您喜欢我的帖子或有任何问题/建议,请给我发表评论。