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>
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user