Auch verfügbar in: 🇬🇧 English

Auth & Benutzer

Inhalt

🇬🇧 English Version


ITSWEBER Play verwendet Better Auth als Authentifizierungs-Framework. Das System unterstützt E-Mail/Passwort als primären Anmelde-Mechanismus und ist für zukünftige OIDC- und WebAuthn-Integration vorbereitet.


Authentifizierungsanbieter

Anbieter Status Hinweise
E-Mail/Passwort Verfügbar Standard; Passwort-Reset per E-Mail
OIDC (Authentik, Keycloak) Geplant v1.0 Vorbereitet, noch nicht implementiert
Passkey/WebAuthn Geplant v1.0 Vorbereitet, noch nicht implementiert
Social OAuth Nicht geplant Kein Fahrplan vorgesehen

Benutzerrollen

Rolle Kurzbezeichnung Berechtigungen
Admin Vollzugriff Alle Bereiche der Plattform, Admin-Panel, Theme, Legal, Einstellungen
Moderator Inhaltsmoderation Alle Inhalte einsehen, Videos/Kommentare ausblenden oder löschen, Meldungen verwalten
Creator Inhaltserstellung Eigene Kanäle und Videos hochladen, bearbeiten und verwalten
Viewer Nur Konsum Öffentliche und nicht gelistete Videos ansehen; Kommentieren, sofern aktiviert

Rollen werden im Admin-Panel unter /admin/users pro Nutzer zugewiesen und können jederzeit geändert werden.


Admin-Bootstrap

Beim ersten Start der Instanz existiert noch kein Admin-Konto. Das Bootstrap-Verfahren läuft automatisch über die Umgebungsvariable:

INITIAL_ADMIN_EMAIL=admin@example.com

Der erste Benutzer, der sich mit exakt dieser E-Mail-Adresse registriert, erhält automatisch die Admin-Rolle. Anschließend kann diese Variable entfernt werden — sie wird nur einmalig ausgewertet.

Die Implementierung befindet sich in apps/api/src/auth.ts.


Session-Verwaltung

Sessions werden als sichere HTTP-Only-Cookies verwaltet:

Eigenschaft Wert
Cookie-Typ HTTP-Only (kein JavaScript-Zugriff)
SameSite Lax
Secure Aktiviert in Produktion (HTTPS)
Session-Dauer 30 Tage (verlängerbar durch Aktivität)

Sessions werden server-seitig in der Datenbank gespeichert. Ein expliziter Logout macht die Session sofort ungültig.


Sichtbarkeits-Durchsetzung

Die Funktion canViewVideo() wird zentral an allen Lese-Endpunkten ausgewertet. Sie bestimmt, wer welches Video sehen darf:

Sichtbarkeit Zugriff Erscheint in Feeds
public Jeder (auch nicht angemeldete Besucher) Ja
unlisted Nur über direkten Link erreichbar Nein
logged_in Nur angemeldete Nutzer Ja (für eingeloggte Nutzer)
private Nur Eigentümer und Admins Nein

Nicht autorisierte Zugriffe auf private- und logged_in-Videos geben HTTP 403 zurück. Signierte MinIO-URLs für Mediendateien verfallen nach 1 Stunde.


Rate-Limiting

Endpunkt Limit Fenster
Global (alle Anfragen) 60 Anfragen pro IP / Minute
Datei-Upload 5 parallele Uploads pro angemeldetem Nutzer
Registrierung 3 Versuche pro IP / Stunde
Login (fehlgeschlagen) 10 Versuche pro IP / 15 Minuten

Rate-Limits werden über Redis implementiert und gelten auch hinter einem Reverse Proxy, sofern der Header X-Forwarded-For korrekt weitergeleitet wird.


Registrierungskontrolle

Admins können die öffentliche Registrierung im Admin-Panel unter /admin/settings deaktivieren. In diesem Einladungs-Modus können nur Admins neue Nutzerkonten anlegen.

Einstellung: REGISTRATION_ENABLED (Umgebungsvariable) oder toggle im Admin-Panel (überschreibt die ENV).


© Benjamin Weber · ITSWEBER — play.itsweber.net · GitHub