tower 0.61.23 / tower-ui 0.61.23 — SSE auth via ?token=

NotificationBell + ActivityTab opened EventSource without auth
(native EventSource API can't set Authorization headers). Phase G's
canSeeOp guard correctly dropped every event for the resulting
anonymous viewer, leaving the bell silent except for the one-shot
backfill on mount.

Backend: claimsFromRequest now falls back to ?token= query param
when the Authorization header is absent. HTTPS-only ingress means
the token stays inside the TLS tunnel; the 15-min access-token TTL
bounds any leakage if it ever surfaces in browser history or proxy
logs.

Frontend: streamOperation + streamAllOperations append the access
token via streamURL(). Plus token-expiry-aware reconnect: on
EventSource error, debounce 5s, close, run authFetch('/me') to let
the 0.61.18 refresh path renew the access token, then re-open with
a fresh streamURL. Without this, the native auto-reconnect would
loop forever with the now-stale token after 15 min.
This commit is contained in:
Claude
2026-04-30 18:15:11 +03:00
parent b96204312f
commit 6b7743ecaf

View File

@@ -9,7 +9,7 @@ backend:
# so every cluster that runs Tower needs the same imagePullSecret
# provisioned out-of-band (until cluster-platform-v3 owns it).
repository: registry.odoosky.cloud/odoosky/docker-mirror/tower
tag: "0.61.22"
tag: "0.61.23"
pullPolicy: IfNotPresent
imagePullSecrets:
- name: docker-mirror-pull
@@ -29,7 +29,7 @@ frontend:
enabled: true
image:
repository: registry.odoosky.cloud/odoosky/docker-mirror/tower-ui
tag: "0.61.20"
tag: "0.61.23"
pullPolicy: IfNotPresent
imagePullSecrets:
- name: docker-mirror-pull