From 7865435e8c82c372a23efad419d2d08af1e496f7 Mon Sep 17 00:00:00 2001 From: Alexander Schmidt Date: Sat, 31 Jan 2026 09:40:11 +0100 Subject: [PATCH] feat(DIRECTUS-SETUP.md): add UUID auth for user login --- docs/DIRECTUS-SETUP.md | 104 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 102 insertions(+), 2 deletions(-) diff --git a/docs/DIRECTUS-SETUP.md b/docs/DIRECTUS-SETUP.md index 5bb326d..a22b36e 100644 --- a/docs/DIRECTUS-SETUP.md +++ b/docs/DIRECTUS-SETUP.md @@ -14,6 +14,10 @@ Komplette Anleitung zur Einrichtung von Directus als Backend für die dgray Klei 4. [Flows (Automatisierungen)](#4-flows-automatisierungen) 5. [Einstellungen](#5-einstellungen) 6. [Frontend-Integration](#6-frontend-integration) +7. [Initiale Daten](#7-initiale-daten) +8. [Checkliste](#8-checkliste) +9. [Anonyme Authentifizierung (UUID-basiert)](#9-anonyme-authentifizierung-uuid-basiert) +10. [Sicherheitshinweise](#10-sicherheitshinweise) --- @@ -778,10 +782,106 @@ if (directus.isAuthenticated()) { --- -## 9. Sicherheitshinweise +## 9. Anonyme Authentifizierung (UUID-basiert) + +Für maximale Privatsphäre nutzt dgray.io ein UUID-basiertes Login-System ohne echte E-Mail-Adressen. + +### 9.1 Konzept + +``` +┌─────────────────────────────────────────────────────────────┐ +│ User klickt "Account erstellen" │ +│ ↓ │ +│ Client generiert UUID v4: │ +│ f47ac10b-58cc-4372-a567-0e02b2c3d479 │ +│ ↓ │ +│ Directus erhält: │ +│ • E-Mail: f47ac10b-58cc-4372-a567-0e02b2c3d479@dgray.io │ +│ • Passwort: f47ac10b-58cc-4372-a567-0e02b2c3d479 │ +│ ↓ │ +│ User speichert UUID → fertig │ +└─────────────────────────────────────────────────────────────┘ +``` + +### 9.2 Vorteile + +| Aspekt | Beschreibung | +|--------|--------------| +| **Privatsphäre** | Keine echten E-Mail-Adressen, keine persönlichen Daten | +| **Einfachheit** | User merkt sich nur eine UUID | +| **Sicherheit** | 122 bit Entropie, Argon2-Hashing durch Directus | +| **Anonymität** | Kein Bezug zur Identität möglich | + +### 9.3 Tradeoffs + +| Pro | Contra | +|-----|--------| +| Keine echten Daten nötig | UUID verloren = Account verloren | +| Nicht rückverfolgbar | Kein Passwort-Reset möglich | +| Simples UX (1 Secret) | User muss UUID sicher aufbewahren | + +### 9.4 Frontend-Implementation + +```javascript +// Account erstellen +async function createAnonymousAccount() { + const uuid = crypto.randomUUID(); + const email = `${uuid}@dgray.io`; + const password = uuid; + + // Bei Directus registrieren + await directus.register(email, password); + + // UUID dem User anzeigen zum Speichern + showUuidToUser(uuid); + + return uuid; +} + +// Login +async function login(uuid) { + const email = `${uuid}@dgray.io`; + await directus.login(email, uuid); +} +``` + +### 9.5 UX-Flow + +1. **Registrierung:** + - User klickt "Account erstellen" + - System generiert UUID, zeigt sie prominent an + - User kopiert UUID (Button "Kopieren") + - Hinweis: "Speichere diese ID sicher - sie ist dein einziger Zugang!" + +2. **Login:** + - User gibt UUID ein (ein Feld) + - System baut E-Mail + Passwort daraus + - Fertig + +3. **Recovery:** + - Nicht möglich (by design) + - Optional: QR-Code zum Offline-Speichern anbieten + +### 9.6 Directus-Konfiguration + +```env +# Public Registration erlauben +PUBLIC_REGISTRATION=true + +# Keine E-Mail-Verifizierung (fake E-Mails) +AUTH_EMAIL_VERIFY=false + +# Kein Passwort-Reset (nicht möglich mit fake E-Mails) +AUTH_PASSWORD_RESET=false +``` + +--- + +## 10. Sicherheitshinweise 1. **Monero-Adressen** werden nur dem Listing-Ersteller und authentifizierten Nutzern angezeigt -2. **Keine echten E-Mails** in Public-Responses - nur über Chat-System +2. **Keine echten E-Mails** - UUID-basierte Authentifizierung 3. **Rate Limiting** für API-Endpunkte aktivieren 4. **Bilder-Upload** auf max. 10MB und erlaubte Typen beschränken 5. **XSS-Schutz** für WYSIWYG-Felder in Directus aktivieren +6. **UUID-Warnung** bei Registrierung: User muss UUID sicher speichern