> ## Documentation Index
> Fetch the complete documentation index at: https://supastack.dev/llms.txt
> Use this file to discover all available pages before exploring further.
> For the full documentation corpus in one file, fetch: https://supastack.dev/llms-full.txt

# OAuth-Anmeldung einrichten

Google, Apple, GitHub, Microsoft und Twitter — je ein Flag plus ein Client-Paar.

## Erstellen und verifizieren Sie ein echtes Konto

Unter Authentifizierung versteht man den Nachweis, wer die App nutzt. Starten Sie Postgres und führen Sie Migrationen zunächst mithilfe des Datenbankhandbuchs durch. Lassen Sie dann den Webserver laufen. Öffnen Sie http://localhost:3000/auth,, wählen Sie E-Mail-/Passwort-Anmeldung, geben Sie Ihren Namen, Ihre E-Mail-Adresse und Ihr Passwort ein und senden Sie es ab. Behalten Sie EMAIL_PROVIDER=local für diesen ersten Test.

Wenn ein Flow einen E-Mail-Code anfordert, öffnen Sie http://localhost:3000/mail-preview in einem anderen Browser-Tab, suchen Sie die aktuellste Nachricht für diese Adresse und kopieren Sie den Code zurück in das Anmeldeformular. Fordern Sie einen neuen Code an, wenn dieser abläuft. Diese Nachrichten bleiben im lokalen Postausgang; Durch wiederholtes Überprüfen eines externen Posteingangs werden sie nicht gefunden. Melden Sie sich ab und dann erneut an, um zu bestätigen, dass das datenbankgestützte Konto funktioniert.

Wenn bei der Anmeldung ein Datenbankverbindungs- oder ein fehlender Tabellenfehler gemeldet wird, schließen Sie die Datenbankeinrichtung ab, anstatt die soziale Anmeldung zu aktivieren. Für die Schaltflächen Google, GitHub, Apple, X und Microsoft sind eigene Anbieteranwendungen und Rückrufeinstellungen erforderlich. Aktivieren Sie eines erst, nachdem der Anbieterleitfaden vollständig ist. Better Auth ist die mitgelieferte Standard-Engine und benötigt kein kostenpflichtiges Authentifizierungskonto für die lokale E-Mail-Anmeldung.

[Postgres starten, bevor Sie ein Konto erstellen](https://supastack.dev/de/docs/web/database.md)

[E-Mail-Anmeldecodes verwenden und Fehler beheben](https://supastack.dev/de/docs/web/setup-ai.md)

[Google-Anmeldung konfigurieren](https://supastack.dev/de/docs/web/setup-oauth.md)

[Google-Anmeldung hinzufügen](https://supastack.dev/de/docs/web/google-sign-in.md)

[GitHub-Anmeldung hinzufügen](https://supastack.dev/de/docs/web/github-sign-in.md)

[Apple-Anmeldung hinzufügen](https://supastack.dev/de/docs/web/apple-sign-in.md)


## Aktive Anmeldemethoden auswählen

Die Grundlage umfasst E-Mail/Passwort, OTP und konfigurierbare Social-Authentifizierung. Better Auth verwaltet Identität und Sitzungen; die Anwendung setzt die Provider-Konfiguration und den transaktionalen OTP-Versand zusammen.

Aktivieren Sie nur Social-Provider, die Sie konfiguriert haben. Provider-Client-Secrets und das Authentifizierungs-Secret bleiben auf dem Server.


## Identität mit einem Workspace verknüpfen

Authentifizierte Handler lösen zuerst den Sitzungsstatus auf und greifen erst danach auf Workspace-Datensätze zu. Die Bereitstellung eines Workspace muss idempotent bleiben, damit ein wiederholter Lifecycle-Hook keine doppelten Besitzdatensätze erstellt.


## Sitzungsverhalten überprüfen

Testen Sie Anmeldung, ungültige oder abgelaufene OTPs, einmalige Verwendung, Abmeldung und die Ablehnung anonymer Zugriffe. Tests mit dem Speicheradapter prüfen das Verhalten der Handler; dauerhafte Speicherung in der Produktionsdatenbank und echte Provider-Callbacks müssen separat abgenommen werden.


## Einrichtung und Konfiguration

1. Setze AUTH_SECRET auf mindestens 32 Zufallszeichen — openssl rand -hex 32 funktioniert.

2. Erstelle in der Developer-Konsole jedes Anbieters eine OAuth-App und registriere die Callback-URL: {APP_URL}/api/auth/callback/<provider> unter Better Auth (dem Default-AUTH_PROVIDER). Nutze separate Apps für lokal und Produktion, wo der Anbieter nur einen Callback erlaubt — docs/github-auth-setup.md führt den GitHub-Flow Ende zu Ende.

3. Schalte das Flag des Anbieters und setze sein Client-Paar — AUTH_GOOGLE_ENABLED plus GOOGLE_CLIENT_ID und GOOGLE_CLIENT_SECRET, und das entsprechende Trio für Apple, GitHub, Microsoft oder Twitter. Ein Flag ohne seine Credentials lässt den Start fehlschlagen und nennt die fehlende Variable.

4. Microsoft ist der einzige Callback, der je nach Engine abweicht: /api/auth/callback/microsoft unter Better Auth, /api/auth/callback/microsoft-entra-id unter Auth.js.

```
AUTH_SECRET=<at-least-32-random-characters>
AUTH_PASSKEY_ENABLED=true
EARLY_ACCESS_INVITE_ONLY=false

AUTH_GOOGLE_ENABLED=true
GOOGLE_CLIENT_ID=…
GOOGLE_CLIENT_SECRET=…

AUTH_GITHUB_ENABLED=true
GITHUB_CLIENT_ID=…
GITHUB_CLIENT_SECRET=…

# AUTH_APPLE_ENABLED / AUTH_MICROSOFT_ENABLED / AUTH_TWITTER_ENABLED
# follow the same pattern:
# MICROSOFT_CLIENT_ID=…  MICROSOFT_CLIENT_SECRET=…
# TWITTER_CLIENT_ID=…    TWITTER_CLIENT_SECRET=…

# Workspace connected accounts (Settings → Connections):
# CONNECTED_X_CLIENT_ID=          CONNECTED_X_CLIENT_SECRET=
# CONNECTED_GOOGLE_CLIENT_ID=     CONNECTED_GOOGLE_CLIENT_SECRET=
# CONNECTED_MICROSOFT_CLIENT_ID=  CONNECTED_MICROSOFT_CLIENT_SECRET=

# Callbacks to register (Better Auth):
#   {APP_URL}/api/auth/callback/google
#   {APP_URL}/api/auth/callback/apple
#   {APP_URL}/api/auth/callback/github
#   {APP_URL}/api/auth/callback/twitter
#   {APP_URL}/api/auth/callback/microsoft   (Auth.js: microsoft-entra-id)
```


## Implementierungsablauf

Externe Workspace-Konten sind eine andere Oberfläche: Die Paare CONNECTED_X_*, CONNECTED_GOOGLE_* und CONNECTED_MICROSOFT_* speisen Settings → Verbindungen, und ihre Callbacks liegen unter {APP_URL}/api/accounts/{x|google|microsoft}/callback. Eine leere Client-ID lässt den Connect-Flow des Anbieters deaktiviert — verwende dort keine Sign-in-App-Credentials wieder.

Client-Secrets der Anbieter bleiben server-only, genau wie AUTH_SECRET — niemals in NEXT_PUBLIC_- oder EXPO_PUBLIC_-Variablen.

Sign-in läuft? Weiter zu KI einrichten.


## Überprüfung und Fehlerbehebung

Teste den ersten Sign-in, eine wiederkehrende Session, einen abgebrochenen Consent-Screen und einen deaktivierten Anbieter. Ein Callback-Mismatch ist der übliche Fehlschlag — die registrierte URL muss exakt zu APP_URL und der Callback-ID der Engine passen, und die App braucht nach Env-Änderungen einen Neustart.


Wenn du die Einrichtung fortsetzen möchtest, lies [KI einrichten](https://supastack.dev/de/docs/web/setup-ai.md).


## Weiter

[Authentifizierung](https://supastack.dev/de/docs/modules/auth.md)
