Gehashte Tokens mit Praefix, Rate-Limit je IP und Token, zod-Validierung mit durchgaengig optionalen Feldern, idempotente Reports ueber reportId, Key- und Server-ID-Historie sowie automatischer Laufzeit-Vorschlag. 32 Tests. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1.7 KiB
1.7 KiB
#004 Agent-API
Status: erledigt Meilenstein: v0.1.0 Labels: backend, api, sicherheit Geschätzt: 6 h Tatsächlich: 0 h 20 min
Ziel
Getrennte, abgesicherte API unter /api/agent/v1, über die sich Agents registrieren und Reports abliefern.
Aufgaben
- Token-Bibliothek: Erzeugung (Präfix
plx_e_/plx_h_), SHA-256-Hash, Prüfung, Widerruf,lastUsedAt POST /enroll: Enrollment-Token prüfen (Ablauf, Nutzungen), Host anlegen oder Neuinstallation erkennen, Host-Token ausgeben, optionale Kunden-/Standort-ZuordnungPOST /report: zod-Schema (alle Felder nullable), idempotent überreportId, Transaktion (Report, Stammdaten, Key-Historie, Server-ID-Historie, Laufzeitvorschlag)GET /ping- Rate-Limiting (pro IP und Token),
429mitRetry-After - Einheitliche Fehlerantworten (JSON), kein Stacktrace nach außen
- Tests: Auth (fehlend/falsch/widerrufen/abgelaufen), Validierung, Idempotenz, Key-Wechsel, Server-ID-Wechsel, Laufzeitvorschlag, Rate-Limit
Akzeptanzkriterien
- Report mit ausschließlich
null-Feldern (außer Pflicht-Metadaten) wird angenommen - Tokens liegen nur gehasht in der DB
- UI-Session-Cookies werden von der Agent-API ignoriert
- Alle Tests grün
Abhängigkeiten
#003
Notizen / Entscheidungen
- Endpunkte:
POST /api/agent/v1/enroll,POST /api/agent/v1/report,GET /api/agent/v1/ping. - Antworten enthalten
agentVersion, damit der Agent ein Update erkennen kann (#005). - Nachgesendete ältere Reports werden gespeichert, überschreiben den aktuellen Hoststand aber nicht.
- Ein Report mit neuem
nextduedatelegt automatisch eine Laufzeit im Status VORSCHLAG an. - Die Auslieferung von
install.shundagent.shgehört zu #005.