New in the 0.4.0-SNAPSHOT development line — everything listed here landed after the 0.3.0 release and is not part of it. Every entry links to the section that documents it, and those sections carry the NEW badge. Each brick of the suite keeps its own page of this kind; the ecosystem index gathers them. When the next release train ships, this page is frozen with it and restarts empty on the dev line.
MicroProfile JWT 2.2
Cervantes moves from MicroProfile JWT 2.1 to 2.2 (cervantes#19):
-
RS256 and ES256 both accepted by default — when
mp.jwt.verify.publickey.algorithmis unset, tokens signed with any ofRS256/384/512andES256/384/512are accepted, and a JWK Set mixing RSA and EC keys is resolved bykid.0.3.0defaulted toRS256. To keep refusing EC-signed tokens, setmp.jwt.verify.publickey.algorithm=RS256. Supported algorithms, Upgrading from 0.3.0. -
The configured algorithm is a family check — when
mp.jwt.verify.publickey.algorithmis set, the token’salgheader must belong to the same family (RSA or EC), checked before any key is looked up: withRS256, anRS512token passes and anES256token is rejected. Supported algorithms, Validation pipeline. -
RSA or EC PEM keys, detected from the key — an inline (
mp.jwt.verify.publickey) or file/classpath (mp.jwt.verify.publickey.location) PEM public key may be RSA or EC. With the algorithm unset, its type is read from the key itself; with it set, the key must belong to that family, or loading fails withnot a valid RSA key/not a valid EC key.0.3.0read every PEM key as RSA unless the property named an EC algorithm. Signature verification keys. -
MicroProfile JWT 2.2 TCK: 208 / 208 — the official 2.2 suite passes in full; it adds
RsaAndEcSignatureAlgorithmTest(RS256 and ES256 tokens against one mixed RSA+EC JWK Set) and no longer ships the EJB, JACC and Servlet container tests. The runner script is nowrun-official-tck-mp-jwt-2.2.sh. TCK status.
Configuration checked at container start
-
A bad
mp.jwt.*value stops the start — an unrecognisedmp.jwt.verify.publickey.algorithmormp.jwt.decrypt.key.algorithm(exact, case-sensitive names:RS256notrs256,RSA-OAEPnotrsa-oaep), or an unreadable verification or decryption key, now fails the container start with aDeploymentExceptionnaming the property, the value and the supported values.0.3.0started anyway: it read an unrecognised verification algorithm as RSA, rejected every encrypted token at request time for an unrecognised decryption algorithm (CERV-004), and reported an unreadable key only at the validator’s first injection. This is a behaviour change: values that used to be tolerated must be corrected. With no verification key configured, MP JWT stays off and the application starts as before; anhttp://orhttps://key location is still fetched at the first validation. When the configuration is validated, Upgrading from 0.3.0.
API
-
JwtConfiggains a seventh component —requiredAlgorithm(Optional<SignatureAlgorithm>), which carriesmp.jwt.verify.publickey.algorithmfor embedders who build aJwtConfigthroughcervantes-api. The six-argument constructor of0.3.0is kept, so code that builds aJwtConfigstill compiles; a record deconstruction pattern onJwtConfigmust add the new component. Upgrading from 0.3.0.
Java modules
-
io.vidocq.cervantes.cdi.vaubanreadsjakarta.json— thecervantes-cdi-vaubandescriptor now declaresrequires jakarta.json(CERV-006, cervantes#21): the@Claimresolver maps claims to JSON-P values, and0.3.0relied on another module to supply that read edge. It also declaresuses org.eclipse.microprofile.config.spi.ConfigProviderResolver, for the start-time configuration check. Every Cervantes module-info is now compiled together with its code, so a missing edge of this kind fails the Cervantes build instead of reaching the published jar. Java modules. -
Works on a class path, outside Vauban —
CervantesClaimExtensionis now also listed inMETA-INF/services(CERV-007, cervantes#24).0.3.0registered it only through the module descriptor, so on a class path (Weld, an application server, a WAR)@Claiminjection points were unsatisfied.cervantes-cdi-vaubanandcervantes-jaxrsalso ship aMETA-INF/beans.xml(annotated), so a container that does not scan implicit archives still discovers their beans. On a class path.
Other CDI containers
-
Proven on Weld and Open Liberty — two new test modules run the Cervantes jars, unchanged, without Vauban:
cervantes-it-weldon Weld SE 6.0 (class path),cervantes-it-openlibertyas a WAR on Open Liberty 26.0.0.10 (MicroProfile 7, CDI 4.0) with Liberty’s ownmpJwtandappSecurityoff. Neither is published (cervantes#24). Other CDI containers. -
vauban-apiis now a runtime dependency ofcervantes-cdi-vaubanandcervantes-jaxrs— it wasprovided, so outside Vauban the request context, the token producer, the authentication filter and the@RolesAllowedfeature, which carry a constructor takingio.vidocq.vauban.api.ProxyLink, could not be loaded, and the deployment failed (CERV-008). The module descriptors nowrequires io.vidocq.vauban.api(it wasrequires static). Nothing changes on the Vidocq runtime, which already has it. Other CDI containers.