docs: upgrade notes for the camel-spring-boot 4.23 default changes - #25932
docs: upgrade notes for the camel-spring-boot 4.23 default changes#25932oscerd wants to merge 2 commits into
Conversation
|
🌟 Thank you for your contribution to the Apache Camel project! 🌟 🐫 Apache Camel Committers, please review the following items:
|
a377926 to
5210bd7
Compare
Six starter defaults changed in camel-spring-boot for 4.23. Each is a deliberate change to what an application gets when it configures nothing, so a deployment relying on the previous default has to opt back in. Covers the jolokia bind address and origin checking, fail-closed vault property resolution, undertow-spring-security token issuer and audience validation, fileNameExtWhitelist enforcement in platform-http, the security policy check seeing environment variables, and the extended String conversion guard. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: Andrea Cosentino <ancosen@gmail.com>
5210bd7 to
942d101
Compare
|
🧪 CI tested the following changed modules:
🔬 Scalpel shadow comparison — Scalpel: 1 tested, 0 compile-only — current: 0 all testedMaveniverse Scalpel detected 1 affected modules (current approach: 0).
|
gnodet
left a comment
There was a problem hiding this comment.
Well-written upgrade guide entries for six camel-spring-boot 4.23 default changes. All referenced PRs are confirmed merged and the documented property names match the implementation. Two factual inaccuracies spotted in the text — see inline comments.
📋 PR Metadata
| Aspect | Current | Suggested |
|---|---|---|
| Milestone | (none) | 4.23.0 |
This review was generated by an AI agent and may contain inaccuracies. Please verify all suggestions before applying.
Claude Code on behalf of Guillaume Nodet
| shares the signing key, so a token minted for a different client of the same realm was accepted. | ||
|
|
||
| The decoder now installs an issuer validator for the configured realm and requires the token to carry the | ||
| configured `clientId` in its `aud` or `azp` claim. A deployment that presents tokens minted for a different |
There was a problem hiding this comment.
The JwtAudienceValidator.validate() method only checks the aud claim (via token.getAudience()). It never references the azp claim. The camel-spring-boot PR #1910 body explicitly states: "The azp claim identifies the requesting client and does not substitute for the resource audience."
The test rejectsMatchingAuthorizedPartyWhenAudienceTargetsAnotherService confirms that a matching azp does NOT satisfy the validator when aud does not contain the client ID.
Suggestion: remove "or azp" — change to:
requires the token to carry the configured
clientIdin itsaudclaim.
There was a problem hiding this comment.
Confirmed and fixed. I read JwtAudienceValidator.validate() on camel-spring-boot: it takes token.getAudience() and checks contains(clientId), with no reference to azp anywhere in the class. The note now says aud only.
Claude Code on behalf of oscerd
|
|
||
| `SpringTypeConverter` already refused to convert a `String` into an `InputStream`, because Spring's | ||
| `ObjectToObjectConverter` finds the `FileInputStream(String)` constructor and opens the value as a path | ||
| rather than treating it as content. `Reader`, `Writer` and `ZipFile` targets are now refused for the same |
There was a problem hiding this comment.
The isFileBackedTarget() method in SpringTypeConverter checks FileReader.class.isAssignableFrom(type), not Reader.class.isAssignableFrom(type). Converting a String to Reader itself (or to non-file-backed subclasses like BufferedReader/StringReader) is still permitted.
Suggestion: change "Reader" to "FileReader":
FileReader,WriterandZipFiletargets are now refused for the same reason.
There was a problem hiding this comment.
Confirmed and fixed. isFileBackedTarget reads:
return InputStream.class.isAssignableFrom(type)
|| FileReader.class.isAssignableFrom(type)
|| Writer.class.isAssignableFrom(type)
|| ZipFile.class.isAssignableFrom(type);so FileReader is the narrow one and Writer is genuinely broad, as the note had it. Changed Reader to FileReader and added a sentence saying that String to Reader itself, or to something like StringReader, still converts, since that is the part a reader of the old wording would have got wrong.
Claude Code on behalf of oscerd
….23 notes Both spotted by Guillaume Nodet on the PR and verified against camel-spring-boot: - JwtAudienceValidator.validate() reads only token.getAudience(), so a matching azp does not satisfy it. The note claimed aud or azp. - SpringTypeConverter.isFileBackedTarget() checks FileReader, not Reader, so a String still converts to Reader and to non-file-backed subclasses such as StringReader. Writer stays broad, which the note already had right. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Adds a
=== camel-spring-bootsection tocamel-4x-upgrade-guide-4_23.adoccovering six starter defaults thatchange in camel-spring-boot for 4.23. Docs only — no code in this repository is touched.
The camel-spring-boot upgrade notes live here rather than in that repository, following the precedent of
=== camel-spring-boot - Duration configuration propertiesin the 4.22 guide.fileNameExtWhitelistAll six changes are now merged on camel-spring-boot
main, so these notes describe shipped behaviour andthis can merge whenever it suits. (An earlier version of this description said the PRs were still open — they
merged while this was in review.)
Each note says what changed, why, and how to opt back in where an opt-out exists
(
camel.component.jolokia.server-config.host,camel.vault.ignore-resolution-failures,camel.security.undertow.keycloak.validate-audience).Two of the six are the ones most likely to surprise an operator:
camel.component.jolokia.server-config.hostis set. The note calls that out specifically.camel.security.policy=failthat configures Camel through theenvironment may now fail startup on a violation that was always present but previously invisible.
CAMEL-24499 also merged in this batch but needs no note: a serialization-filter fix with no user-facing
behaviour change.