Zum Inhalt

MFA Modul (Multi-Factor Authentication)

Zweck

Das MFA Modul bietet Multi-Factor Authentication (MFA) mit TOTP (Authenticator-Apps) und SMS-Verifizierung für zusätzliche Sicherheit. Es unterstützt einfache Einrichtung, Backup-Codes und flexible Aktivierung pro Benutzer.

Verantwortlichkeiten

Was gehört zum Modul

  • MFA-Aktivierung: MFA für Benutzer aktivieren/deaktivieren
  • TOTP-Support: Authenticator-Apps (Google Authenticator, Authy, etc.)
  • SMS-Verifizierung: SMS-basierte Verifizierung
  • Backup-Codes: Backup-Codes für Notfälle
  • MFA-Verifizierung: MFA bei Login erzwingen

Was gehört nicht zum Modul

  • Authentifizierung: Siehe Core Auth
  • Benutzer-Verwaltung: Siehe members Modul

Implementierung

Backend- und Frontend-API sind modular aufgebaut; Details siehe interne Entwickler-Dokumentation.

Konfiguration

Entitlement

Das Modul erfordert das Entitlement module.mfa. Dieses wird pro Tenant aktiviert/deaktiviert.

Entitlement-Key: module.mfa

Environment Variables

Keine modulspezifischen ENV-Variablen erforderlich.

Defaults

  • MFA-Typ: TOTP (Standard)
  • Backup-Codes: 10 Codes pro Benutzer

Abhängigkeiten

Optionale Abhängigkeiten

Keine.

Core-Abhängigkeiten

  • auth: Für Authentifizierung

API-Endpoints

Authentifizierung

Alle Endpoints erfordern Authentifizierung. Zwei Methoden werden unterstützt:

  1. Firebase ID Token (Standard für Web-App)
  2. API-Token (für externe Nutzung)

Header: Authorization: Bearer <token>

MFA-Secret generieren

POST /api/mfa/generate

Generiert ein MFA-Secret für die Einrichtung.

Sicherheit: Secret, QR-Code und Backup-Codes sind hochsensibel. Sie werden nur einmal im Setup-Flow ausgegeben; niemals loggen; ausschließlich über TLS übertragen. Backup-Codes werden einmalig ausgegeben und müssen sicher aufbewahrt werden.

Response:

{
  "secret": "<TOTP_SECRET>",
  "qrCode": "data:image/png;base64,...",
  "backupCodes": ["<BACKUP_CODE_1>", "<BACKUP_CODE_2>", ...]
}

MFA aktivieren

POST /api/mfa/enable

Aktiviert MFA für den aktuellen Benutzer.

Request Body:

{
  "token": "123456"
}

MFA-Verifizierung

POST /api/mfa/verify

Verifiziert einen MFA-Token.

Wird dokumentiert: Detaillierte API-Endpunkt-Dokumentation folgt.

Speicherung

MFA-Daten (Secret, Backup-Codes) werden serverseitig verschlüsselt bzw. gehasht gespeichert; Zugriff nur über die authentifizierte API.

Fehlerfälle

HTTP-Status-Codes

  • 200 OK: Erfolgreich
  • 400 Bad Request: Validierungsfehler
  • 401 Unauthorized: Nicht authentifiziert
  • 403 Forbidden: Keine Berechtigung
  • 500 Internal Server Error: Server-Fehler

Fehlercodes

Wird dokumentiert: Detaillierte Fehlercodes folgen.

FAQ / Troubleshooting

Wird dokumentiert: Häufige Fragen und Lösungen folgen.