宣布 Reactor Core 3.1 的第一个候选版本

发布 | Simon Baslé | 2017 年 9 月 18 日 | ...

我代表 Reactor 团队,很高兴地宣布 reactor-core 3.1.0.RC1 已发布 🎉。这是在月底发布 3.1 正式版(长期支持版本,将支持 Spring 5!)之前的最后一步。

它还辅以各种版本,所有版本都在 Bismuth-M4 发布列车和 BOM 中捆绑在一起

  • reactor-testreactor-extrareactor-adapterreactor-logback 都已发布到 3.1.0.RC1
  • reactor-netty 在新的 0.7.0.M2 里程碑版本中进行了重大更新和错误修复
  • reactor-kafka 已发布到 1.0.0.M4 里程碑版本

要获取此版本,最佳方法是使用 BOM,如参考指南 此处所述。请务必阅读有关 里程碑的部分(将其转换为 Bismuth-M4

Spring Cloud Data Flow 1.3.0.M2 发布

发布 | Glenn Renfro | 2017 年 9 月 18 日 | ...

我们很高兴地宣布 Spring Cloud Data Flow 及其相关项目生态系统的 1.3.0. M2 版本。

本地服务器:入门指南

仪表盘 / Flo

在这个仪表盘/Flo 的 1.3 版本的第二个版本中,我们解决了支持流和任务/批处理操作的核心功能。

继续 基于 Angular4 的基础设施升级,流和任务/批处理工作流现在包括现代外观和感觉,并包含可用性改进。

文档测试覆盖率webpack 捆绑分析器都经历了重大…

推出 Spring Shell 2.0M1!

发布 | Eric Bottard | 2017 年 9 月 18 日 | ...

我们很高兴地宣布 Spring Shell 2.x 的第一个发布里程碑!

经过两年的开发,Spring Shell 2 是 Spring Shell 的完整重写,利用了更新的组件(如 JLine 3)并应用了更好的模块化。Spring Shell 2 也是考虑到 Spring Boot 而构建的,利用了自动配置和其他引导功能。

内部架构现在使用可插拔模型来发现哪些方法要转换为命令,如何将用户输入解析为参数值以及如何处理返回值。这与 Spring MVC 采用的方法非常相似,并允许以以前不可能的方式扩展框架。但是,Spring Shell 的用户通常不会关心这一点,只处理新的“标准” 命令 API

Spring Boot 2.0 M4 中的安全更改

工程 | Madhura Bhave | 2017 年 9 月 15 日 | ...

Spring Boot 2.0 的里程碑版本 4 对 Spring Boot 提供的安全自动配置进行了重要更改。

问题陈述

在 Spring Boot 1.x 之前,默认的自动配置使用基本身份验证保护了所有应用程序端点。如果 actuator 在类路径上,则有一个单独的安全配置应用于 actuator 端点。这两种自动配置的开启和关闭方式完全独立。因此,希望提供自定义安全的用户发现自己与 WebSecurityConfigurerAdapter 的排序问题作斗争。

此外,对于 actuator 端点,management.security.enabled 的影响…

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)中声明的便捷访问。

授权请求改进

我们添加了 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://127.0.0.1/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 上下文将填充当前用户,该用户用于确定是否授予或拒绝访问。

Spring Security 的标准@WithMockUser相关注解已更新为适用于 Reactive 方法安全。例如

@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 MongoDB 2.0.0.M3 发布

工程 | Greg L. Turnquist | 2017 年 9 月 15 日 | ...

尊敬的 Spring 社区:

Spring Session MongoDB 2.0.0.M3 已发布。它基于

在此版本中,添加了一些新功能来简化与 Spring WebFlux 应用程序一起使用。

@EnableMongoWebSession
public class SpringWebFluxConfig {

}

您只需将@EnableMongoWebSession应用于任何 Spring 配置类即可激活对 MongoDB 的会话支持。此外,您必须提供一个ReactorMongoOperations Spring Bean,但如果您使用 Spring Boot 的spring-boot-starter-data-mongodb-reactive

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 时事通讯

通过 Spring 时事通讯保持联系

订阅

领先一步

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

了解更多

获取支持

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

了解更多

即将举行的活动

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

查看全部