$ the-wire · showcase
Spring Security hardens the post-login redirect, Spring Session moves to Antora
By RepoJournal · Filed · About Spring · Composed from the cited sources · methodology
Spring Security's default RequestCache now refuses to redirect users to background browser fetches like apple-touch-icon probes, closing a small but real open-redirect surface after authentication [ref:9].
The default RequestCache previously ignored only `/favicon.*`; it now ignores the well-known paths browsers and their devtools fetch on their own, so an Apple touch icon probe can never become the URL a user lands on after logging in [1]. Safari and other WebKit browsers request `apple-touch-icon.png`, `apple-touch-icon-precomposed.png`, and sized variants like `apple-touch-icon-152x152.png` at the domain root as soon as a page loads, with no matching `<link>` tag required [2]. If your app relies on the default RequestCache and any custom ignore patterns, check they still compose with the widened defaults.
Spring Session spent the window on documentation and Boot 4 housekeeping. Spring's move to Antora means the single-page docs are gone and the version drop-down makes version-specific links unnecessary, so `spring-session-docs.gradle` no longer parses versions and internal links have been updated accordingly [3][4]. On the runtime side, deprecated `RuntimeHints#serialization` usage was replaced with `RuntimeHints#reflection` [5], and a separate change adds common serialization hints [6].
For anyone running Spring Session on SQL Server, the DDL for `PRINCIPAL_NAME` and `ATTRIBUTE_NAME` now uses `NVARCHAR` instead of `VARCHAR` [7]. The MS JDBC driver sends Unicode parameters, so `VARCHAR` columns forced an implicit conversion on lookups and joins, which the change describes as causing "Index Scan regression and significant performance degradation under load for session ope" [7]. Existing deployments need a schema migration, not just a dependency bump.
In Spring Kafka, the default delegate in `DelegatingByTopicSerialization` was never configured when passed to the two-arg constructor: the fallback lives in its own `defaultDelegate` field, `buildDefault()` passes a `null` pattern, and `configure()` only rebuilds the default when the config map carries the default key [8][9]. The fix is queued for auto-cherry-pick to `4.1.x` and `4.0.x` [9]. Elsewhere: Spring Tools 5.4.0.RELEASE adds validations and quick fixes for `@ApplicationModuleListener`, `@SpringJUnitConfig`, `@RestController`, and specific `@Scope` annotations, plus Claude Code/MCP support for rendering a project's logical structure [10]; Spring Security's JavaScript build moved to Node 24 [11]; and spring-data-relational dropped a redundant constructor from the `PathNode` record [12].
Action items
- → Migrate PRINCIPAL_NAME and ATTRIBUTE_NAME to NVARCHAR on SQL Server before the next Spring Session release you deploy spring-projects/spring-session [plan]
- → Audit custom RequestCache ignore patterns against the widened Spring Security defaults spring-projects/spring-security [monitor]
- → Upgrade to Spring Tools 5.4.0.RELEASE for the new Boot validations and quick fixes spring-projects/spring-tools [plan]
References
- [1] Modernize the default RequestCache background-request ignore list ↗ spring-projects/spring-security
- [2] Ignore Apple touch icon requests in default RequestCache ↗ spring-projects/spring-security
- [3] Documentation and Spring Boot 4 updates and fixes ↗ spring-projects/spring-session
- [4] Update documentation links ↗ spring-projects/spring-session
- [5] Update Deprecated RuntimeHints Usage ↗ spring-projects/spring-session
- [6] Add Common Serialization Hints ↗ spring-projects/spring-session
- [7] Favor NVARCHAR to Prevent Implicit Conversion ↗ spring-projects/spring-session
- [8] Configure the default delegate in DelegatingByTopicSerialization ↗ spring-projects/spring-kafka
- [9] Configure the default delegate in DelegatingByTopicSerialization (#4650) ↗ spring-projects/spring-kafka
- [10] 5.4.0.RELEASE ↗ spring-projects/spring-tools
- [11] Update to Node 24 ↗ spring-projects/spring-security
- [12] Remove redundant constructor in PathNode ↗ spring-projects/spring-data-relational