Spring Security 5.0.0 M4 发布

版本发布 | Rob Winch | 2017年9月15日 | ...

我代表社区很高兴地宣布 Spring Security 5.0.0 M4 的发布。此版本包含错误修复、新功能,并基于 Spring Framework 5.0.0 RC4。您可以在变更日志中找到完整详情。此版本的亮点包括:

OAuth2 / OIDC

OAuth2 登录 Java 配置

HttpSecurity.oauth2Login() DSL 做了一些改进。

现在可以使用AuthorizationGrantTokenExchangerSecurityTokenRepository<AccessToken>的自定义实现来配置*令牌端点*,如下所示:

protected void configure(HttpSecurity http) throws Exception {
  http
    .authorizeRequests()
      .anyRequest().authenticated()
      .and()
    .oauth2Login()
      .tokenEndpoint()
        .authorizationCodeTokenExchanger(this.authorizationCodeTokenExchanger())
	.accessTokenRepository(this.accessTokenRepository());
}

我们还添加了自定义*授权端点*和*重定向端点*请求路径的功能。

protected void configure(HttpSecurity http) throws Exception {
  http
    .authorizeRequests()
      .anyRequest().authenticated()
      .and()
    .oauth2Login()
      .authorizationEndpoint()
        .requestMatcher(new AntPathRequestMatcher("/custom-path/{clientAlias}"))
        .and()
      .redirectionEndpoint()
        .requestMatcher(new AntPathRequestMatcher("/custom-path/callback/{clientAlias}"));
}

与 Spring Security 中的所有AbstractAuthenticationProcessingFilter一样,您还可以设置自定义AuthenticationSuccessHandlerAuthenticationFailureHandler

protected void configure(HttpSecurity http) throws Exception {
  http
    .authorizeRequests()
      .anyRequest().authenticated()
      .and()
     .oauth2Login()
       .successHandler(this.customAuthenticationSuccessHandler())
       .failureHandler(this.customAuthenticationFailureHandler());
}

安全令牌存储库

我们引入了SecurityTokenRepository<T extends SecurityToken>抽象,它负责SecurityToken的持久化。

初始实现InMemoryAccessTokenRepository提供AccessToken的持久化。在即将发布的版本中,我们还将提供一个支持*刷新令牌*持久化的实现。

ID 令牌和声明

IdToken做了一些小的改进,并为JwtClaimAccessorStandardClaimAccessorIdTokenClaimAccessor提供了一些最终的实现细节,这些细节提供了对其关联结构(例如JwtIdTokenUserInfo)中claims的便捷访问。

授权请求改进

我们添加了AuthorizationRequestRepository将*授权请求*持久化到Cookie中的功能。当前的默认实现持久化到HttpSession中,但是,可以提供自定义实现来改为持久化到Cookie中。

还为AuthorizationCodeRequestRedirectFilter中配置的redirect-uri添加了对URI变量的支持。

OAuth2 客户端属性

对配置 OAuth 2.0 客户端的属性进行了一些小的更新。下面的配置概述了当前的结构。您会注意到,它支持配置多个客户端,例如 google、github、okta 等。

security:
  oauth2:
    client:
      google:
        client-id: your-app-client-id
        client-secret: your-app-client-secret
        client-authentication-method: basic
        authorization-grant-type: authorization_code
        redirect-uri: "{scheme}://{serverName}:{serverPort}{contextPath}/oauth2/authorize/code/{clientAlias}"
        scope: openid, profile, email, address, phone
        authorization-uri: "https://accounts.google.com/o/oauth2/v2/auth"
        token-uri: "https://www.googleapis.com/oauth2/v4/token"
        user-info-uri: "https://www.googleapis.com/oauth2/v3/userinfo"
        user-name-attribute-name: "sub"
        jwk-set-uri: "https://www.googleapis.com/oauth2/v3/certs"
        client-name: Google
        client-alias: google
      github:
        ...
      okta:
        ...

在 Spring Security 示例oauth2login中可以找到使用新的 Spring Security OAuth 2.0 / OpenID Connect 1.0 登录功能的完整示例。该指南将引导您完成使用外部 OAuth 2.0 或 OpenID Connect 1.0 提供程序设置 OAuth 2.0 登录示例应用程序的步骤。

响应式安全

响应式方法安全

Spring Security 的响应式支持现在通过利用 Reactor 的 Context 包含方法安全。亮点如下所示,但您可以在samples/javaconfig/hellowebflux-method中找到一个完整的实际示例。

第一步是使用@EnableReactiveMethodSecurity启用对@PreAuthorize@PostAuthorize注解的支持。此步骤确保对象被正确代理。

@EnableWebFluxSecurity
@EnableReactiveMethodSecurity
public class SecurityConfig {

下一步是创建一个用@PreAuthorize@PostAuthorize注解的服务。例如:

@PreAuthorize("hasRole('ADMIN')")
public Mono<String> findMessage() {

然后,Spring Security 的 WebFlux 支持将确保 Reactor Context 将填充当前用户,该用户用于确定是否授予或拒绝访问。

Spring Security 的标准@WithMockUser相关注解已更新为可与响应式方法安全一起使用。例如:

@RunWith(SpringRunner.class)
// ...
public class HelloWorldMessageServiceTests {
  @Autowired
  HelloWorldMessageService messages;

@Test public void messagesWhenNotAuthenticatedThenDenied() { StepVerifier.create(this.messages.findMessage()) .expectError(AccessDeniedException.class) .verify(); }

@Test @WithMockUser public void messagesWhenUserThenDenied() { StepVerifier.create(this.messages.findMessage()) .expectError(AccessDeniedException.class) .verify(); }

@Test @WithMockUser(roles = "ADMIN") public void messagesWhenAdminThenOk() { StepVerifier.create(this.messages.findMessage()) .expectNext("Hello World!") .verifyComplete(); } }

测试支持也与TestWebClient很好地配合使用。例如:

@RunWith(SpringRunner.class)
// ...
public class HelloWebfluxMethodApplicationTests {
  @Autowired
  ApplicationContext context;

WebTestClient rest;

@Before public void setup() { this.rest…

Spring Session 2.0.0 M4

版本发布 | Rob Winch | 2017年9月15日 | ...

我代表社区很高兴地宣布Spring Session 2.0.0.M4的发布。此版本主要集中在改进 WebFlux 支持。亮点是:

简化的 WebFlux 配置

为 WebFlux 配置 Spring Session 已简化为:

@Configuration
@EnableSpringWebSession
public class HelloWebfluxSessionConfig {

  @Bean
  public MapReactorSessionRepository reactorSessionRepository() {
    return new MapReactorSessionRepository(new ConcurrentHashMap<>());
  }
}

您还可以通过简单地添加一个WebSessionIdResolver Bean 来切换解析会话 ID 的策略。例如,要从使用 Cookie 解析会话 ID 切换到使用标头,您可以使用 Spring Framework 的新HeaderWebSessionIdResolver……

Spring Boot 2.0.0 M4 现已可用

版本发布 | Stéphane Nicoll | 2017年9月15日 | ...

紧随最新的 Spring Framework 5 发布候选版本之后,Spring Boot 2.0 M4 现已从我们的里程碑存储库中提供。此版本关闭了150 个问题和请求请求,并且是迈向 2.0 GA 的重要一步。感谢所有做出贡献的人!

此里程碑提供了许多小的调整和增强,以及三个主要更改:

有关更改和升级说明的完整列表,请参阅 WIKI 上的Spring Boot 2.0.0.M4 发行说明。我们在更新参考文档方面稍有滞后,因此请考虑使用快照版本……

Spring Cloud Stream Ditmars/1.3 发布候选版本公告

版本发布 | Gary Russell | 2017年9月14日 | ...

我们很高兴地宣布,Spring Cloud Stream Ditmars.RC1 发布候选版本可在Spring 里程碑存储库中使用。发行说明包含有关与 Spring Boot、Spring Cloud、Spring AMQP 和 Spring for Apache Kafka 的版本兼容性的相关信息。

Apache Kafka 的 Kafka Streams

此版本的目标是将Apache Kafka 的 Kafka Streams支持作为顶级项目提升到 Apache Kafka 绑定器实现中。通过将 Apache Kafka 的 Kafka Streams 作为一等公民,开发人员现在可以通过……构建 Spring Cloud Stream 应用程序。

Spring Integration 5.0 里程碑 7 和 4.3.12 可用

版本发布 | Artem Bilan | 2017年9月14日 | ...

我代表 Spring Integration 团队很高兴地宣布,Spring Integration 5.0 版本 (5.0.0.M7) 的里程碑 7 现已可用。

它可以从里程碑存储库下载。

repositories {
    maven { url 'http://repo.spring.io/libs-milestone' }
}
compile "org.springframework.integration:spring-integration-core:5.0.0.M7"

21 个 JIRA(以及一些 GitHub 问题)包含在此版本中,包括错误修复和许多新功能。自之前宣布的里程碑 6以来,M7中的一些功能亮点:

  • 响应式 WebFlux 通道适配器已被提取到单独的spring-integration-webflux模块中,以区分基于 Servlet 的 MVC 配置和响应式基础。

  • 引入了EmbeddedJsonHeadersMessageMapper,允许将消息头与有效负载一起嵌入到包中,用于目标协议,这些协议本身不支持标头,例如 TCP/IP、MQTT、AWS Kinesis 和 0.11.x之前的 Apache Kafka 版本。

  • java.util.function.Supplier现在可以充当MessageSource

  • ……

Spring AMQP 2.0 发布候选版本、1.7.4 和 1.6.11 可用

版本发布 | Gary Russell | 2017年9月12日 | ...

我很高兴地宣布,Spring AMQP 的2.0.0.RC1发布候选版本现在可在Spring 里程碑存储库中使用。

此版本在最终里程碑里程碑5的基础上增加了一些小的修复/改进。

感谢所有社区成员的反馈和贡献!

GA 版本将在 9 月份 Spring Framework 5.0 GA 版本发布后不久发布。

有关 2.0 中所有更改的完整列表,请参阅参考手册中的新增功能

维护版本1.7.41.6.11 也已可用。

项目页面 | JIRA | 贡献 | 帮助 | 聊天

Spring for Apache Kafka 2.0 和 1.3 版本候选版可用

版本发布 | Gary Russell | 2017年9月12日 | ...

我们很高兴地宣布 Spring for Apache Kafka 2.0 版本的2.0.0.RC1 版本候选版现已可用。

正如1.3.0.M2 公告中所述,我们同时发布了 1.3 和 2.0 版本,其中 1.3 包含 2.0 功能的子集,支持 Kafka 0.11.x.x 客户端,同时仍然支持 Spring Framework 4.3。因此,1.3.0.RC1 版本候选版也已可用。

它们可以从里程碑存储库下载。

repositories {
    maven { url 'http://repo.spring.io/libs-milestone' }
}
compile "org.springframework.kafka:spring-kafka:2.0.0.RC1"

上次公告以来,以下是总结……

Spring Boot 1.5.7 现已可用

发布 | Brian Clozel | 2017年9月12日 | ...

我谨代表团队高兴地宣布,Spring Boot 1.5.7 已发布,现已可从repo.spring.ioMaven Central获取。

Spring Boot 1.5.7 包含51 个修复、改进和依赖项更新。感谢所有通过问题报告和拉取请求做出贡献的人。

接下来是什么?

Spring Framework 5.0 RC4 刚刚发布,其他 Spring 项目也将陆续发布。Spring Boot 2.0 M4 即将发布,这将是测试**Spring Framework GA 之前的最后一个候选版本**的好方法。如果您想提前了解 Spring Boot 2,并且我们非常乐意听到您的反馈,请访问start.spring.io并选择 Spring Boot 2.0.0.BUILD-SNAPSHOT……

获取 Spring 时事通讯

通过 Spring 时事通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring 在一个简单的订阅中提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部