feat(DIRECTUS-SETUP.md): add UUID auth for user login

This commit is contained in:
2026-01-31 09:40:11 +01:00
parent cb500a2c49
commit 7865435e8c

View File

@@ -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