Files
julian.kiedaischandClaude Opus 5.5 5ded84cb33 feat: F5.2 sign-in with the dashboard's ticket and the service way
Server F checks the dashboard's entry ticket as itsdangerous does
(tools/ticket-oracle: tickets made by itsdangerous 2.2.0 itself), redeems
it at /__auth for a session cookie (only the key's SHA-256 is kept) and
decides at /sync by the session's grant: none, read or write; a frozen
project is read by everyone; every refusal names its reason (one list in
packages/protocol/src/sync.ts). A WebSocket from a page of another origin
is refused. /svc/* with the service key makes, deletes, freezes and
thaws projects, ends a person's grant or all their sessions (connections
let go) and lists the sessions. Snapshots, restoring and copying move to
F6 (they need the canonical doc.json and an epoch).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:56:45 +00:00

23 lines
1019 B
Markdown

# Orakel für die Eintrittskarte
Das Dashboard signiert die Eintrittskarte für Server F mit itsdangerous
(`URLSafeTimedSerializer`, Salz `mdg-filius-ticket`, 60 s), Server F prüft
sie in Node (`packages/server/src/ticket.ts`). Dieses Orakel lässt
itsdangerous selbst Karten ausstellen — bei fester Uhr — und hält fest, was
es beim Lesen zu einem Zeitpunkt antwortet: die Nutzlast, abgelaufen oder
falsch signiert.
```bash
./run.sh # schreibt packages/server/test/tickets.python.json
```
Braucht Python 3; itsdangerous kommt in der Version des Dashboards
(`backend/requirements.txt`) in ein eigenes `.venv`.
Fälle: gewöhnliche Karte (schon sie ist zlib-gepackt), Lesestufe, Umlaute
und Emoji, lange Namen, genau 60 s alt, 61 s alt, aus der Zukunft, fremdes
Geheimnis, Scratchs Salz, eine veränderte Nutzlast, ohne Signatur,
Unsinn, leer, eine Liste statt eines Objekts (ungepackt), Karten ohne
Stufe, mit unbekannter Stufe, mit einem Projekt, das keine UUID ist, ohne
Namen, nur mit den Pflichtfeldern.