Open lrkgithub opened 5 years ago
你可以在 Twitter 关注 @SpringSecurity
和 Spring Security Team
及时了解最新的信息。你可以关注 @SpringCentral
以获取 Spring 全部框架的信息。
Spring Security 5.1 提供了许多新的特性。以下是这次发布的亮点。
authorization_code
(授权码认证)client_credentials
( Client 模式)@WithUserDetails
现在可以与 ReactiveUserDetailsService
一起工作BadCredentialsException
SecurityContext
时,支持自定义 @WithMockUser
。举例来说, @WithMockUser(setupBefore = TestExecutionEvent.TEST_EXECUTION)
将会在测试执行之前,JUnit的 @Before
注解之后,设定一个使用者这一节讨论你需要知道的关于获取 Spring Security 二进制文件(编译好的版本)的全部知识。请参考 1.3 节 “源码”,了解如何获取源码。
这一节讨论你需要知道的关于获取 Spring Security 二进制文件(编译好的版本)的全部知识。请参考 1.3 节 “源码”,了解如何获取源码。
Spring Security 版本是以 MAJOR、MINOR、PATCH, 例如:
像大多数开源的项目,Spring Security 将它的依赖作为 Maven 的项目(artifact)来部署。接下来的章节提供了如何使用 Maven 来配置 Spring Security 的细节。
Spring Boot 提供了聚集了 Spring Security 相关依赖的 spring-boot-starter-security 启动器。最简单和建议的方式是在使用 IDE 中集成的或者通过 http://start.spring.io 来使用 Spring Initializer。
当然,也可以手动的添加启动器。
pom.xml
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
因为 Spring Boot 提供了 Maven Boom 来管理依赖版本,所以没有必要加上版本号。如果你希望重写 Spring Security 的版本号,你可以使用一个 Maven 的参数来完成:
pom.xml
<properties>
<!-- ... -->
<spring-security.version>5.2.0.BUILD-SNAPSHOT</spring-security.version>
</dependencies>
因为 Spring Security 只在 major 版本中提供突破性进展,所以使用一个最新版本的带 Spring Security 的 Spring Boot 是比较安全的。当然,有时升级 Spring Framework 版本也是必要的。这也可以简单地通过添加一个 Maven 参数来完成:
pom.xml
<properties>
<!-- ... -->
<spring.version>5.2.0.M2</spring.version>
</dependencies>
如果你想添加额外的功能,例如 LDAP,OpenID之类的。你需要适当的引入 4节 “项目模块” 的内容。
如果部署 Spring Security 却不部署 Spring Boot,推荐的方式是利用 Spring Security 的 BOM 来确定整个项目中的 Spring Security 版本一致。
pom.xml
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>5.2.0.BUILD-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
一个最小的 Spring Security Maven 依赖集合通常类似于如下:
pom.xml
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
</dependency>
</dependencies>
如果你想添加额外的功能,例如 LDAP,OpenID之类的。你需要适当的引入 4节 “项目模块” 的内容。
Spring Security 是基于 Spring Framework 5.2.0.M2 版本来构建的,但是通常可以与任意更新版本的 Spring Framework 5.x 一起工作。许多使用者困扰的问题是, Spring Security 的传递依赖是 Spring Framework 5.2.0.M2版本,这可能会导致奇怪的类路径(classpath)问题。最简单的解决方式是在你的 pom.xml 中,加入 spring-framework-bom
到 <dependencyManagement>
部分,如下所示:
pom.xml
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.2.0.M2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
这样可以确保 Spring Security 所有的传递依赖使用了 Spring 5.2.0.M2 模块。
pom.xml
<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-snapshot</id>
<name>Spring Snapshot Repository</name>
<url>https://repo.spring.io/snapshot</url>
</repository>
</repositories>
如果你选用了 milestone 或者 发布的候选版本,你需要确保你有 Spring Milestone 源,如下所示:
pom.xml
<repositories>
<!-- ... possibly other repository elements ... -->
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url>https://repo.spring.io/milestone</url>
</repository>
</repositories>
像大多数开源项目, Spring Security 以 Maven 方式部署它的依赖,这样可以获得一流的 Gradle 支持。接下来的章节,会提供如何使用 Gradle 配置 Spring Security 的细节。
Spring Boot 提供了聚集了 Spring Security 相关依赖的 spring-boot-starter-security 启动器。最简单和建议的方式是在使用 IDE 中集成的或者通过 http://start.spring.io 来使用 Spring Initializer。
当然,也可以手动增加依赖:
build.gradle
dependencies {
compile "org.springframework.boot:spring-boot-starter-security"
}
因为 Spring Boot 提供了一个 Maven BOM 来管理版本,这里就没有必要再精确到版本号。如果你希望重写 Spring Security 的版本,你也可以通过一个 Gradle 参数来这样做:
build.gradle
ext['spring-security.version']='5.2.0.BUILD-SNAPSHOT'
因为 Spring Security 只在 major 版本中提供突破性修改,所以使用最新的带 Spring Security 的 Spring Boot 版本是更安全的。当然,有时升级 Spring Framework 版本也是必要的。这也可以简单地通过添加一个 Gradle 参数来完成:
build.gradle
ext['spring.version']='5.2.0.M2'
如果你想添加额外的功能,例如 LDAP,OpenID之类的。你需要适当的引入 4节 “项目模块” 的内容。
如果部署 Spring Security 却不部署 Spring Boot,推荐的方式是利用 Spring Security 的 BOM 来确定整个项目中的 Spring Security 版本一致。这可以利用 Dependency Management Plugin 来完成
build.gradle
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework.security:spring-security-bom:5.2.0.BUILD-SNAPSHOT'
}
}
一个最小的 Spring Security Maven 依赖集合通常类似于如下:
build.gradle.
dependencies {
compile "org.springframework.security:spring-security-web"
compile "org.springframework.security:spring-security-config"
}
如果你想添加额外的功能,例如 LDAP,OpenID之类的。你需要适当的引入 4节 “项目模块” 的内容。
Spring Security 是基于 Spring Framework 5.2.0.M2 版本来构建的,但是通常可以与任意更新版本的 Spring Framework 5.x 一起工作。许多使用者困扰的问题是, Spring Security 的传递依赖是 Spring Framework 5.2.0.M2版本,这可能会导致奇怪的类路径(classpath)问题。最简单的解决方式是在你的 pom.xml 中,加入 spring-framework-bom
到 <dependencyManagement>
部分,如下所示:(这可以使用 Dependency Management Plugin 来完成)
build.gradle.
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework:spring-framework-bom:5.2.0.M2'
}
}
这样可以确保 Spring Security 所有的传递依赖使用了 Spring 5.2.0.M2 模块。
所有 GA 版本(以 .RELEASE 结尾的版本号)都部署在 Maven 中心中,所以使用 mavenCentral() 源来获取 GA 版本就足够了。
build.gradle.
repositories {
mavenCentral()
}
如果你想使用一个 SNAPSHOT 版本,你需要确保你将 Spring Snapshot 源像如下所示定义正确
build.gradle.
repositories {
maven { url 'https://repo.spring.io/snapshot' }
}
如果你想使用 milestone 或者发布的候选版本,你需要确保你将 Spring milestone 源像如下定义正确
build.gradle.
repositories {
maven { url 'https://repo.spring.io/milestone' }
}
在 Spring Security 3.0 中,代码库已经被分为几个独立的 jar 包,这样可以更清晰的区分功能和第三方 jar 包依赖。如果你是用 Maven 来构建你的项目,那么这里有几个模块需要你加入到你的 pom.xml
中。即使你不使用 Maven ,我们仍建议你的参考这个 pom.xml
来了解第三方依赖以及版本。另外,检查示例程序包含的库是一个好主意。
包含核心认证和访问控制的类和接口,远程支持和基础的配置 API 。任何使用 Spring Security 的程序都需要。支持独立应用,远程客户,方法(服务层)安全以及 JDBC 用户配置。包含如下的顶级包:
org.springframework.security.core
org.springframework.security.access
org.springframework.security.authentication
org.springframework.security.provisioning
Spring Security 参考手册
作者
Ben Alex , Luke Taylor , Rob Winch , Gunnar Hillert , Joe Grandja , Jay Bryant
5.2.0.BUILD-SNAPSHOT
版权所有©2004-2017
本文件的副本可供您自己使用和分发给他人,前提是您不对此类副本收取任何费用,并且每份副本均包含本版权声明,无论是以印刷版还是电子版分发。
Spring Security 是一个提供认证,授权和保护常用攻击的框架。Spring Security是一个事实上的基于Spring框架的安全层应用,对命令式和反应式应用都有一流的支持。
章节Ⅰ 前言
这一部分将会讨论 Spring Security 的 物流。
1. Spring Security 社区
欢迎来到 Spring Security 社区!这章节将会讨论如何利用我们庞大社区的价值。
1.1 获得帮助
如果你需要有关于 Spring Security 的帮助,我们这里将提供帮助。下面是获取帮助的一些最好的方式
spring-security
标签进行提问1.2 成为参与者
我们欢迎你参与到 Spring Security 项目中来。为 Spring Security 贡献的方式有很多种,包括 在 StackOverflow 网站上回答问题,编写新的代码,提升已有代码,完善文档,提供更多例子和教程,或者简单的提出建议。
1.3 源码
Spring Security 的源码可以在 https://github.com/spring-project/spring-security 上找到。
1.4 Apache 2 License
Spring Security 是一个开源软件,遵循 Apache 2.0 license
1.5 社交媒体
你可以在 Twitter 关注
@SpringSecurity
和Spring Security Team
及时了解最新的信息。你可以关注@SpringCentral
以获取 Spring 全部框架的信息。