Wie Supabase Auth das Leben eines Entwicklers erleichtert und warum es nicht nur ein GoTrue-Klon ist
Kennen Sie das Gefühl, wenn Sie ein neues Projekt starten und realize, dass Sie wieder Registrierung, Passwort-Wiederherstellung und E-Mail-Verifizierung einrichten müssen? Zum hundertsten Mal. Es scheint einfacher, einfach einen fertigen Service wie Firebase oder Supabase Cloud zu nehmen. Aber manchmal erfordert ein Projekt die vollständige Kontrolle über Daten oder eine geschlossene Umgebung, in der Cloud-Lösungen einfach keine Sicherheitsaudits bestehen. Genau hier kommt Supabase Auth ins Spiel — ein Go-basierter Authentifizierungsserver, den Sie auf einem Heimserver oder in einem industriellen Cluster betreiben können.
Was genau ist es
Wenn Sie mit dem Supabase-Ökosystem gearbeitet haben, haben Sie wahrscheinlich deren Auth genutzt. Aber nicht jeder weiß, dass es ein separates Open-Source-Microservice ist, das unabhängig laufen kann. Das Team basierte es ursprünglich auf dem GoTrue-Projekt von Netlify, aber im Laufe der letzten Jahre haben sich beide so weit auseinanderentwickelt, dass es jetzt zwei verschiedene Paar Schuhe sind.
Supabase Auth gibt JWT-Token aus, verwaltet Benutzer und arbeitet gut mit Row Level Security (RLS) in PostgreSQL zusammen. Im Wesentlichen ist es eine Brücke zwischen Ihrem Frontend und der Datenbank, die die gesamte schmutzige Arbeit der Identitätsverifizierung erledigt.
Was es in der Praxis gut macht
Der Hauptvorteil des Projekts ist, dass es nahezu alle modernen Web-Anforderungen out of the box abdeckt. Sie müssen keine einzige Codezeile schreiben, um eine Anmeldung über Google oder Apple zu implementieren.
Passwortlose Anmeldung
Magic Links und SMS-OTP-Codes sind zum Standard geworden. Supabase Auth unterstützt dies standardmäßig. Der Benutzer gibt seine E-Mail-Adresse ein, erhält einen Link, klickt darauf — und ist im System. Für mobile Apps gibt es eine Anmeldung per Telefonnummer über Anbieter wie Twilio oder Messagebird.
Umfangreiche OAuth-Anbieterliste
Es gibt über ein Dutzend verfügbare Optionen: von den Klassikern wie Google, Facebook und GitHub bis zu spezialisierteren Optionen wie Discord, Notion, Slack und sogar WorkOS für Enterprise-Anforderungen. Die Konfiguration beschränkt sich auf das Hinzufügen einiger Umgebungsvariablen mit der Client-ID und dem Secret.
Refresh-Token-Rotation
Dies ist ein wichtiges Sicherheitsfeature. Der Server kann erkennen, wenn alte Refresh-Token wiederverwendet werden. Wenn jemand ein Token stiehlt und versucht, es einzulösen, erkennt das System dies und macht die gesamte Sitzungskette für diesen Benutzer ungültig. Es ist ein kleines Detail, das ernsthafte Vorfälle verhindert.
Postgres-Kompatibilität
Da das Projekt innerhalb von Supabase entstanden ist, ist es für PostgreSQL optimiert. Es speichert nicht nur Benutzer in einer Tabelle — es ermöglicht komplexe zeilenbasierte Zugriffskontrolllogik. Sie müssen nicht in jeder API-Anfrage an die Datenbank nach user_id prüfen — Postgres erledigt dies automatisch basierend auf dem vom Server ausgestellten JWT.
Wie es unter der Haube funktioniert
Das Projekt ist in Go geschrieben, was es sehr leichtgewichtig und schnell macht. Es braucht nur eine PostgreSQL-Datenbank zum Laufen.
Ein interessantes Detail zu Migrations: Sie werden automatisch angewendet, wenn die Binary startet. Das ist praktisch für Docker-Container — Image aktualisieren, neu starten, und die Datenbank ist bereit.
Wenn Sie sich entscheiden, dies selbst zu hosten, hier ein Beispiel, wie Sie schnell eine Umgebung mit Docker aufsetzen:
# Собираем бинарник
make build
# Запускаем инфраструктуру
make dev
Danach haben Sie einen API auf Port 9999 laufen, bereit, Anfragen zu bearbeiten.
Konfigurations-Fallstricke
Die Konfiguration über Umgebungsvariablen ist Standard für Microservices, und es gibt hier wirklich viele davon. Sie können alles konfigurieren: von der Mindestpasswortlänge bis zu Zeichensatzkomplexitätsanforderungen.
Wenn Sie beispielsweise die normale Registrierung deaktivieren und nur eine Einladungsanmeldung erlauben möchten, setzen Sie einfach:
GOTRUE_DISABLE_SIGNUP=true
Und wenn Sie Captcha aktivieren müssen (hCaptcha und Cloudflare Turnstile werden unterstützt), übergeben Sie einfach die Secret-Keys über die SECURITY_CAPTCHA_SECRET-Variablen.
Warum Sie den Proxy nicht vergessen sollten
Die README enthält eine ehrliche Warnung der Entwickler: Einen Authentifizierungsserver in der Produktion zu betreiben, ist nichts für schwache Nerven. Das Team empfiehlt dringend, Supabase Auth hinter einem TLS-Proxy (Nginx, Kong oder Cloud-Load-Balancer) zu betreiben.
Ein wichtiger Hinweis für diejenigen, die eine Migration planen: Supabase Auth hat einige Features des ursprünglichen GoTrue entfernt. Zum Beispiel haben sie die native Multi-Tenancy-Unterstützung über die instances-Tabelle entfernt. Wenn Ihre Architektur darauf angewiesen ist, müssen Sie entweder Ihren Ansatz überdenken oder beim ursprünglichen GoTrue von Netlify bleiben.
Für wen ist das gedacht
Ich sehe drei Hauptszenarien, in denen dieses Projekt unverzichtbar ist:
- Self-hosted Projekte: wenn Sie Ihren eigenen Firebase-Ersatz auf Ihren eigenen Servern aufbauen.
- Enterprise-Lösungen: wenn die Sicherheitsrichtlinie des Unternehmens die Speicherung von Benutzerdaten in einer Drittanbieter-Cloud verbietet.
- Lokale Entwicklung: selbst wenn Sie Supabase Cloud nutzen, ist die Möglichkeit, einen identischen Authentifizierungsserver offline laufen zu lassen, von unschätzbarem Wert.
Supabase Auth ist ein solides Tool, das die Notwendigkeit beseitigt, das Rad für die Autorisierung neu zu erfinden. Ja, die README-Dokumentation mag trocken und überladen mit einer Endpunktliste erscheinen, aber der Code selbst ist stabil und durch Millionen von Benutzern in Supabase Cloud erprobt. Wenn Sie ein zuverlässiges Gateway für Benutzer benötigen, das mit JWT und Postgres funktioniert, ist es wahrscheinlich eine der besten Lösungen in Go heute.
Ähnliche Projekte