Community
Mercure 1.1.4 closes two authorization gaps, and includes the changes tagged in 1.1.3. Compatibility mode now relaxes token checks only for 0.x clients, so a JWT from a shared issuer, such as an OpenID Connect ID token, no longer gets past disabled anonymous access, and 0.x history replay through lastEventID works again. The per-token subscription limit can no longer be bypassed by re-encoding a token's signature. The Helm chart can also terminate TLS in the pod, keeping HTTP/2 end-to-end and adding HTTP/3. Read the upgrade notes before upgrading a hub running protocol_version_compatibility.
🐛 Bug Fixes
- Compatibility mode: scope
protocol_version_compatibilityto 0.x clients. Only tokens carrying amercureclaim and noauthorization_detailsskip the RFC 9068 checks (typ,exp,aud,iss); before, any token withoutauthorization_detailsskipped them. 1.x tokens are rejected in theauthorizationquery parameter and themercureAuthorizationcookie, subscribe requests mixing 0.x parameters withmatchormatch_*get a400, and replay through the 0.xlastEventIDparameter is restored. Underprotocol_version_compatibility 7, publishing public updates to ungranted topics requires a legacymercure.publishclaim. A 0.x token with nomercureclaim is now rejected: add"mercure": {}to keep it working. Fixes #1443. by @dunglas in #1444 - Compatibility mode: keep accepting
last_event_idbesidetopic, as 1.0 to 1.1.2 did, instead of answering with a400. Browser clients send this combination, and it is their only way to replay history underprotocol_version_compatibility 8. The hub logs a deprecation notice: switch these clients tomatch. by @dunglas in #1456 - Subscriber limits: key the
per_tokensubscription limit on the signedheader.payloadpart instead of the raw token. Flipping the unused bits of a signature's last base64url character, or using the second valid ECDSA signature (sandn-s), let one token open more streams than allowed. by @dunglas in #1445
✨ New Features
- Helm chart: serve HTTPS and HTTP/3 from the pod, for instance behind an OpenShift passthrough route. New values:
extraVolumesandextraVolumeMountsto mount certificates,service.portName(anhttpsname switches the test pod and notes to HTTPS),service.http3to expose the port over UDP, andmetricsService.annotations. The legacy/healthzprobes are gone, since the hub no longer serves this route: withhealthCheck.enabled: false, the pod has no probes. See Serving HTTPS from the pod. by @jza0330 in #1294
Enterprise
Mercure Enterprise picks up the same fixes in image v1.1.4, along with updated dependencies. Mercure Cloud hubs are upgraded automatically: use Mercure Cloud to get fixes like these without managing upgrades yourself.
Enterprise releases ship under the Enterprise SLA, with prioritized patches and direct support. Contact contact@mercure.rocks for the managed Cloud offering, on-premise licenses, custom development, consulting, and training.
💖 New Contributors
Full Changelog: v1.1.2...v1.1.4