
Eine JWT-basierte API zur Verwaltung von Benutzern und Ausstellung von JWT-Tokens
Auth ist ein in Go geschriebener Benutzerverwaltungs- und Authentifizierungsserver, der Funktionen von Supabase unterstützt, wie zum Beispiel:
Es basiert ursprünglich auf der hervorragenden GoTrue-Codebasis von Netlify, jedoch haben sich beide in Bezug auf Funktionen und Fähigkeiten erheblich auseinanderentwickelt.
Wenn du zum Projekt beitragen möchtest, wirf bitte einen Blick auf den Leitfaden für Mitwirkende.
Erstelle eine .env-Datei, um deine eigenen benutzerdefinierten Umgebungsvariablen zu speichern. Siehe example.env
docker-compose -f docker-compose-dev.yml up postgresmake build . Du solltest eine Ausgabe wie diese sehen:```bash
go build -ldflags "-X github.com/supabase/auth/cmd.Version=git rev-parse HEAD"
GOOS=linux GOARCH=arm64 go build -ldflags "-X github.com/supabase/auth/cmd.Version=git rev-parse HEAD" -o gotrue-arm643. Führen Sie die Auth-Binärdatei aus: `./auth`
### Wenn Sie Docker installiert haben
Erstellen Sie eine `.env.docker`-Datei, um Ihre eigenen benutzerdefinierten Umgebungsvariablen zu speichern. Siehe [`example.docker.env`](https://github.com/supabase/auth/blob/HEAD/example.docker.env)
1. `make build`
2. `make dev`
3. `docker ps` sollte zwei Docker-Container anzeigen (`auth-auth-1` und `auth-postgres-1`)
4. Das war's! Besuchen Sie den [Health-Check-Endpunkt](http://localhost:9999/health), um zu bestätigen, dass auth läuft.
## Produktionsbetrieb
Einen Authentifizierungsserver in der Produktion zu betreiben, ist keine leichte Aufgabe. Wir empfehlen die Verwendung von [Supabase Auth](https://supabase.com/auth), das regelmäßig Sicherheitsupdates erhält.
Andernfalls stellen Sie bitte sicher, dass Sie einen Prozess einrichten, um zeitnah auf die neueste Version zu aktualisieren. Sie können dies tun, indem Sie diesem Repository folgen, insbesondere den Abschnitten [Releases](https://github.com/supabase/auth/releases) und [Security Advisories](https://github.com/supabase/auth/security/advisories).
### Abwärtskompatibilität
Auth verwendet das [Semantic Versioning](https://semver.org)-Schema. Hier sind einige weitere Erläuterungen zu den Garantien der Abwärtskompatibilität:
**Go-API-Kompatibilität**
Auth ist nicht dafür gedacht, als Go-Bibliothek verwendet zu werden. Es gibt keine Garantien für die Abwärtskompatibilität der API, wenn es auf diese Weise verwendet wird, unabhängig davon, welche Versionsnummer sich ändert.
**Patch**
Änderungen an der Patch-Version garantieren Abwärtskompatibilität mit:
- Datenbankobjekten (Tabellen, Spalten, Indizes, Funktionen).
- REST-API
- JWT-Struktur
- Konfiguration
Garantierte Beispiele:
- Eine Spalte wird ihren Typ nicht ändern.
- Eine Tabelle wird ihren Primärschlüssel nicht ändern.
- Ein Index wird nicht entfernt.
- Eine Eindeutigkeitsbeschränkung wird nicht entfernt.
- Eine REST-API wird nicht entfernt.
- Parameter für REST-APIs funktionieren weiterhin äquivalent wie zuvor (oder besser, wenn ein Fehler behoben wurde).
- Die Konfiguration wird sich nicht ändern.
Nicht garantierte Beispiele:
- Eine Tabelle kann neue Spalten erhalten.
- Spalten in einer Tabelle können neu angeordnet werden.
- Nicht-eindeutige Constraints können entfernt werden (Datenbankprüfungen, NULL, Standardwerte).
- JWTs können neue Eigenschaften erhalten.
**Minor**
Änderungen an der Minor-Version garantieren Abwärtskompatibilität mit:
- REST-API
- JWT-Struktur
- Konfiguration
Ausnahmen von diesen Garantien werden nur dann gemacht, wenn schwerwiegende Sicherheitsprobleme gefunden werden, die auf keine andere Weise behoben werden können.
Garantierte Beispiele:
- Bestehende APIs können als veraltet markiert werden, funktionieren aber für die nächsten paar Minor-Versionen weiter.
- Konfigurationsänderungen können als veraltet markiert werden, funktionieren aber für die nächsten paar Minor-Versionen weiter.
- Bereits ausgestellte JWTs werden akzeptiert, aber neue JWTs können eine andere Struktur haben (in der Regel aber ähnlich).
Nicht garantierte Beispiele:
- Entfernung von JWT-Feldern nach einem Deprecation-Hinweis.
- Entfernung bestimmter APIs nach einem Deprecation-Hinweis.
- Entfernung der Anmeldung mit externen Anbietern nach einem Deprecation-Hinweis.
- Löschung, Kürzung, erhebliche Schemaänderungen an Tabellen, Indizes, Sichten, Funktionen.
Wir streben an, einen Deprecation-Hinweis in den Ausführungsprotokollen für mindestens zwei Major-Versionen oder zwei Wochen bereitzustellen, wenn mehrere Versionen veröffentlicht werden. Die Kompatibilität wird garantiert, solange der Hinweis aktiv ist.
**Major**
Änderungen an der Major-Version garantieren keine Abwärtskompatibilität mit früheren Versionen.
### Geerbte Funktionen
Bestimmte geerbte Funktionen aus der Netlify-Codebasis werden von Supabase nicht unterstützt und können in Zukunft ohne vorherige Ankündigung entfernt werden. Dies ist eine umfassende Liste dieser Funktionen:
1. Mandantenfähigkeit (Multi-Tenancy) über die Tabelle `instances`, d.h. den Konfigurationsparameter `GOTRUE_MULTI_INSTANCE_MODE`.
2. Systembenutzer (Zero-UUID-Benutzer).
3. Super-Admin über die Spalte `is_super_admin`.
4. Gruppeninformationen in JWTs über `GOTRUE_JWT_ADMIN_GROUP_NAME` und andere Konfigurationsfelder.
5. JWT-Signierung. Supabase Auth unterstützt asymmetrische Schlüssel (standardmäßig RS256; ECC/Ed25519 optional). HS256 wird weiterhin aus Kompatibilitätsgründen unterstützt, aber die Migration zu asymmetrischen Schlüsseln wird empfohlen, um Validierung und Rotation zu vereinfachen. Zukünftige Entfernungen (Deprecations) werden im Changelog angekündigt. Weitere Details finden Sie im [Leitfaden zu JWT-Signaturschlüsseln](https://supabase.com/docs/guides/auth/signing-keys) und im [JWTs-Leitfaden](https://supabase.com/docs/guides/auth/jwts).
Beachten Sie, dass dies keine vollständige Liste ist und sie sich ändern kann.
### Best Practices beim Selbsthosting
Hier sind einige Best Practices, die Sie beim Selbsthosting befolgen sollten, um die Abwärtskompatibilität mit Auth sicherzustellen:
1. Ändern Sie nicht das von Auth verwaltete Schema. Sie können alle Migrationen im Verzeichnis `migrations` einsehen.
2. Verlassen Sie sich nicht auf das Schema und die Datenstruktur in der Datenbank. Verwenden Sie immer Auth-APIs und JWTs, um Informationen über Benutzer abzuleiten.
3. Führen Sie Auth immer hinter einem TLS-fähigen Proxy aus, z. B. einem Load Balancer, CDN, nginx oder anderer ähnlicher Software.
## Konfiguration
Sie können Auth entweder über eine Konfigurationsdatei namens `.env`, über Umgebungsvariablen oder eine Kombination aus beidem konfigurieren. Umgebungsvariablen haben das Präfix `GOTRUE_` und haben immer Vorrang vor Werten, die über die Datei bereitgestellt werden.
### Top-Level```properties
GOTRUE_SITE_URL=https://example.netlify.com/
SITE_URL - string erforderlich
Die Basis-URL, unter der Ihre Website erreichbar ist. Wird derzeit in Kombination mit anderen Einstellungen verwendet, um URLs für E-Mails zu erstellen. Jede URI, die denselben Host wie SITE_URL verwendet, ist ein zulässiger Wert für redirect_to-Parameter (siehe /authorize usw.).
URI_ALLOW_LIST - string
Eine durch Kommas getrennte Liste von URIs (z. B. "https://foo.example.com,https://*.foo.example.com,https://bar.example.com"), die als gültige redirect_to-Ziele zugelassen sind. Standardmäßig []. Unterstützt Wildcard-Abgleich durch Globbing. Z. B. erlaubt https://*.foo.example.com https://a.foo.example.com und https://b.foo.example.com. Globbing wird auch für Subdomains unterstützt. Z. B. erlaubt https://foo.example.com/* https://foo.example.com/page1 und https://foo.example.com/page2.
Weitere gängige Glob-Muster finden Sie unter dem folgenden Link.
OPERATOR_TOKEN - string Nur im Multi-Instanz-Modus
Das gemeinsame Geheimnis mit einem Operator (normalerweise Netlify) für diesen Microservice. Wird verwendet, um zu überprüfen, dass Anfragen über den Operator weitergeleitet wurden und die Nutzlastwerte vertrauenswürdig sind.
DISABLE_SIGNUP - bool
Wenn die Registrierung deaktiviert ist, können neue Benutzer nur über Einladungen erstellt werden. Standardmäßig false, alle Registrierungen aktiviert.
GOTRUE_EXTERNAL_EMAIL_ENABLED - bool
Hiermit können Sie E-Mail-Registrierungen deaktivieren (Benutzer können weiterhin externe OAuth-Anbieter zur Registrierung / Anmeldung verwenden)
GOTRUE_EXTERNAL_PHONE_ENABLED - bool
Hiermit können Sie Telefon-Registrierungen deaktivieren (Benutzer können weiterhin externe OAuth-Anbieter zur Registrierung / Anmeldung verwenden)
GOTRUE_RATE_LIMIT_HEADER - string
Header, auf dessen Basis das Rate-Limiting für den /token-Endpunkt erfolgt. Dieser Header sollte von einem vertrauenswürdigen Upstream-Proxy (z. B. Kong oder Envoy) gesetzt werden. Header wie x-forwarded-for sind fälschbar und können für das Rate-Limiting nicht vertrauenswürdig sein, wenn sie direkt vom Client bereitgestellt werden.
GOTRUE_RATE_LIMIT_EMAIL_SENT - string
Begrenzen Sie die Anzahl der pro Stunde gesendeten E-Mails für die folgenden Endpunkte: /signup, /invite, /magiclink, /recover, /otp und /user.
GOTRUE_PASSWORD_MIN_LENGTH - int
Mindestlänge des Passworts, standardmäßig 6.
GOTRUE_PASSWORD_REQUIRED_CHARACTERS - ein String von Zeichensätzen, getrennt durch :. Ein Passwort muss mindestens ein Zeichen aus jedem Satz enthalten, um akzeptiert zu werden. Um das Zeichen : zu verwenden, maskieren Sie es mit \.
GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED - bool
Wenn die Rotation von Refresh-Tokens aktiviert ist, erkennt die Authentifizierung automatisch böswillige Versuche, ein widerrufenes Refresh-Token erneut zu verwenden. Wird ein böswilliger Versuch erkannt, widerruft GoTrue sofort alle Tokens, die von dem betreffenden Token abgeleitet wurden.
GOTRUE_SECURITY_REFRESH_TOKEN_REUSE_INTERVAL - string
Diese Einstellung ist nur anwendbar, wenn GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED aktiviert ist. Das Wiederverwendungsintervall für ein Refresh-Token ermöglicht es, das Refresh-Token während des Intervalls mehrfach auszutauschen, um Nebenläufigkeits- oder Offline-Probleme zu unterstützen. Während des Wiederverwendungsintervalls betrachtet die Authentifizierung die Verwendung eines widerrufenen Tokens nicht als böswilligen Versuch und gibt einfach das untergeordnete Refresh-Token zurück.
Nur das zuvor widerrufene Token kann wiederverwendet werden. Die Verwendung eines alten Refresh-Tokens lange vor dem aktuell gültigen Refresh-Token löst die Wiederverwendungserkennung aus.
GOTRUE_API_HOST=localhost PORT=9999 API_EXTERNAL_URL=http://localhost:9999
`API_HOST` - `string`
Hostname, auf dem gelauscht werden soll.
`PORT` (no prefix) / `API_PORT` - `number`
Portnummer, auf der gelauscht werden soll. Standardmäßig `8081`.
`API_ENDPOINT` - `string` _Nur Multi-Instanz-Modus_
Steuert, über welchen Endpoint Netlify auf diese API zugreifen kann.
`API_EXTERNAL_URL` - `string` **erforderlich**
Die URL, unter der GoTrue möglicherweise erreicht wird.
`REQUEST_ID_HEADER` - `string`
Falls Sie eine Request-ID von der eingehenden Anfrage übernehmen möchten, geben Sie den Namen in diesem Wert an.
### Datenbank```properties
GOTRUE_DB_DRIVER=postgres
DATABASE_URL=root@localhost/auth
DB_DRIVER - string erforderlich
Wählt aus, welchen Datenbank-Dialekt du verwenden möchtest. Muss postgres sein.
DATABASE_URL (ohne Präfix) / DB_DATABASE_URL - string erforderlich
Verbindungszeichenfolge für die Datenbank.
GOTRUE_DB_MAX_POOL_SIZE - int
Legt die maximale Anzahl offener Verbindungen zur Datenbank fest. Der Standardwert ist 0, was einer „unbegrenzten" Anzahl von Verbindungen entspricht.
DB_NAMESPACE - string
Fügt allen Tabellennamen ein Präfix hinzu.
Hinweis zu Migrationen
Migrationen werden automatisch angewendet, wenn du ./auth ausführst. Du hast jedoch auch die Möglichkeit, die Migrationen über die folgenden Methoden erneut auszuführen:
./auth migratedocker run --rm auth gotrue migrateLOG_LEVEL=debug # available without GOTRUE prefix (exception) GOTRUE_LOG_FILE=/var/log/go/auth.log
`LOG_LEVEL` - `string`
Steuert, welche Loglevels ausgegeben werden. Wählen Sie zwischen `panic`, `fatal`, `error`, `warn`, `info` oder `debug`. Der Standardwert ist `info`.
`LOG_FILE` - `string`
Wenn Sie möchten, dass Logs in eine Datei geschrieben werden, setzen Sie `log_file` auf einen gültigen Dateipfad.
### Observability
Auth verfügt über eine grundlegende Observability-Unterstützung. Es kann
[OpenTelemetry](https://opentelemetry.io)-Metriken und -Traces an einen Collector exportieren.
#### Tracing
Konfigurieren Sie zum Aktivieren von Tracing diese Variablen:
`GOTRUE_TRACING_ENABLED` - `bool`
`GOTRUE_TRACING_EXPORTER` - `string` nur `opentelemetry` wird unterstützt
Stellen Sie außerdem sicher, dass Sie auch die [OpenTelemetry
Exporter](https://opentelemetry.io/docs/reference/specification/protocol/exporter/)-Konfiguration
für Ihren Collector oder Dienst konfigurieren.
Wenn Sie beispielsweise
[Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution)
verwenden, sollten Sie diese standardmäßigen OpenTelemetry-OTLP-Variablen festlegen:```
OTEL_SERVICE_NAME=auth
OTEL_EXPORTER_OTLP_PROTOCOL=grpc
OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443
OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=<API-KEY>,x-honeycomb-dataset=auth"
Um Metriken zu aktivieren, konfigurieren Sie diese Variablen:
GOTRUE_METRICS_ENABLED - boolean
GOTRUE_METRICS_EXPORTER - string, nur opentelemetry und prometheus
werden unterstützt
Stellen Sie sicher, dass Sie auch die OpenTelemetry Exporter Konfiguration für Ihren Collector oder Dienst einrichten.
Wenn Sie den prometheus-Exporter verwenden, können Server-Host und Port mit
diesen standardmäßigen OpenTelemetry-Variablen konfiguriert werden:
OTEL_EXPORTER_PROMETHEUS_HOST - IP-Adresse, Standard 0.0.0.0
OTEL_EXPORTER_PROMETHEUS_PORT - Portnummer, Standard 9100
Die Metriken werden auf dem /-Pfad auf dem Server exportiert.
Wenn Sie den opentelemetry-Exporter verwenden, werden die Metriken an den
Collector übertragen.
Wenn Sie beispielsweise Honeycomb.io verwenden, sollten Sie diese standardmäßigen OpenTelemetry-OTLP-Variablen festlegen:``` OTEL_SERVICE_NAME=auth OTEL_EXPORTER_OTLP_PROTOCOL=grpc OTEL_EXPORTER_OTLP_ENDPOINT=https://api.honeycomb.io:443 OTEL_EXPORTER_OTLP_HEADERS="x-honeycomb-team=,x-honeycomb-dataset=auth"
Beachten Sie, dass Honeycomb.io einen kostenpflichtigen Plan benötigt, um Metriken aufzunehmen.
Wenn Sie ein Problem mit nicht übertragenen Traces oder Metriken debuggen müssen, können Sie
`DEBUG=true` setzen, um weitere Einblicke vom OpenTelemetry-SDK zu erhalten.
#### Benutzerdefinierte Ressourcenattribute
Bei Verwendung des OpenTelemetry-Tracing- oder Metrik-Exporters können Sie benutzerdefinierte
Ressourcenattribute über die [standardmäßige Umgebungsvariable `OTEL_RESOURCE_ATTRIBUTES`](https://opentelemetry.io/docs/reference/specification/resource/sdk/#specifying-resource-information-via-an-environment-variable) definieren.
Ein Standardattribut `auth.version` wird bereitgestellt, das die Build-Version enthält.
#### Tracing von HTTP-Routen
Alle HTTP-Aufrufe an die Auth-API werden getracet. Die Routen verwenden die parametrisierte
Version der Route, und die Werte für die Routenparameter sind als Span-Attribut
`http.route.params.<route-key>` verfügbar.
Zum Beispiel die folgende Anfrage:```
GET /admin/users/4acde936-82dc-4552-b851-831fb8ce0927/
wird verfolgt als:``` http.method = GET http.route = /admin/users/{user_id} http.route.params.user_id = 4acde936-82dc-4552-b851-831fb8ce0927
#### Go-Runtime- und HTTP-Metriken
Alle Go-Runtime-Metriken werden exponiert. Einige HTTP-Metriken werden ebenfalls erfasst
standardmäßig.
### JSON Web Tokens (JWT)```properties
GOTRUE_JWT_SECRET=supersecretvalue
GOTRUE_JWT_EXP=3600
GOTRUE_JWT_AUD=netlify
JWT_SECRET - string erforderlich
Das Geheimnis, mit dem JWT-Tokens signiert werden.
JWT_EXP - number
Wie lange Tokens gültig sind, in Sekunden. Standard ist 3600 (1 Stunde).
JWT_AUD - string
Die standardmäßige JWT-Zielgruppe. Verwenden Sie Zielgruppen, um Benutzer zu gruppieren.
JWT_ADMIN_GROUP_NAME - string
Der Name der Admin-Gruppe (falls aktiviert). Standard ist admin.
JWT_DEFAULT_GROUP_NAME - string
Die Standardgruppe, der alle neuen Benutzer zugewiesen werden.
Wir unterstützen apple, azure, bitbucket, discord, facebook, figma, github, gitlab, google, keycloak, linkedin, notion, snapchat, spotify, slack, twitch, und für die externe Authentifizierung.
Verwenden Sie die Namen als Schlüssel unter external, um jeden einzelnen zu konfigurieren.```properties
GOTRUE_EXTERNAL_GITHUB_ENABLED=true
GOTRUE_EXTERNAL_GITHUB_CLIENT_ID=myappclientid
GOTRUE_EXTERNAL_GITHUB_SECRET=clientsecretvaluessssh
GOTRUE_EXTERNAL_GITHUB_REDIRECT_URI=http://localhost:3000/callback
Es sind keine externen Anbieter erforderlich, aber Sie müssen die erforderlichen Werte angeben, wenn Sie einen davon aktivieren möchten.
`EXTERNAL_X_ENABLED` - `bool`
Gibt an, ob dieser externe Anbieter aktiviert ist oder nicht
`EXTERNAL_X_CLIENT_ID` - `string` **erforderlich**
Die beim externen Anbieter registrierte OAuth2-Client-ID.
`EXTERNAL_X_SECRET` - `string` **erforderlich**
Das vom externen Anbieter bei der Registrierung bereitgestellte OAuth2-Client-Secret.
`EXTERNAL_X_REDIRECT_URI` - `string` **erforderlich**
Die URI, auf die ein OAuth2-Anbieter mit den Werten `code` und `state` umleitet.
`EXTERNAL_X_URL` - `string`
Die Basis-URL, die zum Erstellen der URLs für die Anforderung von Autorisierungs- und Zugriffstokens verwendet wird. Wird von `gitlab` und `keycloak` verwendet. Für `gitlab` lautet der Standardwert `https://gitlab.com`. Für `keycloak` müssen Sie dies auf Ihre Instanz setzen, zum Beispiel: `https://keycloak.example.com/realms/myrealm`
#### Netzwerk-Härtung
Die Konfiguration eines externen Authentifizierungsanbieters führt dazu, dass Auth ausgehende HTTP-Anfragen an die Autorisierungs-, Token- und Userinfo-Endpunkte dieses Anbieters sendet. Das Konfigurieren eines Anbieters entweder über `GOTRUE_EXTERNAL_*`-Einstellungen oder eine Admin-API ist eine administrative Aktion und impliziert Vertrauen in die Hosts und URLs, die kontaktiert werden.
Das Netzwerk, in dem Auth läuft, sollte so gehärtet sein, dass diese ausgehenden Verbindungen keine nur internen Ressourcen erreichen können, die Sie nicht offenlegen möchten, wie `localhost`-/Loopback-Adressen oder Cloud-Metadata-Endpunkte (z. B. `169.254.169.254`). Dies ist vor allem bei Anbietern mit administrativ konfigurierbaren oder ermittelbaren Endpunkten (z. B. benutzerdefinierten OAuth-/OIDC-Anbietern) wichtig, da eine falsch konfigurierte oder bösartige URL andernfalls zum Erreichen interner Infrastruktur verwendet werden könnte.
#### Apple-OAuth
Um die externe Authentifizierung mit Apple lokal auszuprobieren, müssen Sie Folgendes tun:
1. Ordnen Sie localhost auf \<my_custom_dns \> in Ihrer `/etc/hosts`-Konfiguration um.
2. Konfigurieren Sie auth so, dass HTTPS-Verkehr über localhost bereitgestellt wird, indem Sie `ListenAndServe` in [api.go](https://github.com/supabase/auth/blob/HEAD/internal/api/api.go) durch Folgendes ersetzen: ```
func (a *API) ListenAndServe(hostAndPort string) {
log := logrus.WithField("component", "api")
path, err := os.Getwd()
if err != nil {
log.Println(err)
}
server := &http.Server{
Addr: hostAndPort,
Handler: a.handler,
}
done := make(chan struct{})
defer close(done)
go func() {
waitForTermination(log, done)
ctx, cancel := context.WithTimeout(context.Background(), time.Minute)
defer cancel()
server.Shutdown(ctx)
}()
if err := server.ListenAndServeTLS("PATH_TO_CRT_FILE", "PATH_TO_KEY_FILE"); err != http.ErrServerClosed {
log.WithError(err).Fatal("http server listen failed")
}
}
GOTRUE_EXTERNAL_APPLE_SECRET, indem du diesem Beitrag folgst!Das Senden von E-Mails ist nicht erforderlich, wird aber für die Passwortwiederherstellung dringend empfohlen. Wenn aktiviert, musst du die unten aufgeführten erforderlichen Werte angeben.```properties GOTRUE_SMTP_HOST=smtp.mandrillapp.com GOTRUE_SMTP_PORT=587 GOTRUE_SMTP_USER=[email protected] GOTRUE_SMTP_PASS=correcthorsebatterystaple GOTRUE_SMTP_ADMIN_EMAIL=[email protected] GOTRUE_MAILER_SUBJECTS_CONFIRMATION="Please confirm"
`SMTP_ADMIN_EMAIL` - `string` **erforderlich**
Die `From`-E-Mail-Adresse für alle gesendeten E-Mails.
`SMTP_HOST` - `string` **erforderlich**
Der Hostname des Mailservers, über den E-Mails gesendet werden.
`SMTP_PORT` - `number` **erforderlich**
Die Portnummer, über die eine Verbindung zum Mailserver hergestellt wird.
`SMTP_USER` - `string`
Falls der Mailserver eine Authentifizierung erfordert, der zu verwendende Benutzername.
`SMTP_PASS` - `string`
Falls der Mailserver eine Authentifizierung erfordert, das zu verwendende Passwort.
`SMTP_MAX_FREQUENCY` - `number`
Steuert die Mindestzeit, die vergehen muss, bevor eine weitere Bestätigungs-E-Mail für die Registrierung oder eine E-Mail zum Zurücksetzen des Passworts gesendet wird. Der Wert ist die Anzahl der Sekunden. Standardmäßig 900 (15 Minuten).
`SMTP_SENDER_NAME` - `string`
Legt den Namen des Absenders fest. Standardmäßig wird `SMTP_ADMIN_EMAIL` verwendet, falls nicht angegeben.
`MAILER_AUTOCONFIRM` - `bool`
Wenn Sie keine E-Mail-Bestätigung benötigen, können Sie dies auf `true` setzen. Standardmäßig `false`.
`MAILER_OTP_EXP` - `number`
Steuert die Gültigkeitsdauer eines E-Mail-Links oder OTPs.
`MAILER_URLPATHS_INVITE` - `string`
URL-Pfad, der in der Einladungs-E-Mail verwendet wird. Standardmäßig `/verify`.
`MAILER_URLPATHS_CONFIRMATION` - `string`
URL-Pfad, der in der Bestätigungs-E-Mail für die Registrierung verwendet wird. Standardmäßig `/verify`.
`MAILER_URLPATHS_RECOVERY` - `string`
URL-Pfad, der in der E-Mail zum Zurücksetzen des Passworts verwendet wird. Standardmäßig `/verify`.
`MAILER_URLPATHS_EMAIL_CHANGE` - `string`
URL-Pfad, der in der Bestätigungs-E-Mail für die E-Mail-Änderung verwendet wird. Standardmäßig `/verify`.
`MAILER_SUBJECTS_INVITE` - `string`
E-Mail-Betreff für die Benutzereinladung. Standardmäßig `You've been invited`.
`MAILER_SUBJECTS_CONFIRMATION` - `string`
E-Mail-Betreff für die Bestätigung der Registrierung. Standardmäßig `Confirm your email address`.
`MAILER_SUBJECTS_RECOVERY` - `string`
E-Mail-Betreff für das Zurücksetzen des Passworts. Standardmäßig `Reset your password`.
`MAILER_SUBJECTS_MAGIC_LINK` - `string`
E-Mail-Betreff für die Magic-Link-E-Mail. Standardmäßig `Your sign-in link`.
`MAILER_SUBJECTS_EMAIL_CHANGE` - `string`
E-Mail-Betreff für die Bestätigung der E-Mail-Änderung. Standardmäßig `Confirm your new email address`.
`MAILER_SUBJECTS_REAUTHENTICATION` - `string`
E-Mail-Betreff für die erneute Authentifizierung. Standardmäßig `{{ .Token }} is your verification code`.
`MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über ein geändertes Passwort. Standardmäßig `Your password was changed`.
`MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über eine geänderte E-Mail-Adresse. Standardmäßig `Your email address was changed`.
`GOTRUE_MAILER_SUBJECTS_PHONE_CHANGED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über eine geänderte Telefonnummer. Standardmäßig `Your phone number was changed`.
`GOTRUE_MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über eine verknüpfte Identität. Standardmäßig `A new sign-in method was linked to your account`.
`GOTRUE_MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über eine entfernte Identität. Standardmäßig `A sign-in method was removed from your account`.
`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über eine hinzugefügte Verifizierungsmethode. Standardmäßig `A new verification method was added to your account`.
`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION` - `string`
E-Mail-Betreff für die Benachrichtigung über eine entfernte Verifizierungsmethode. Standardmäßig `A verification method was removed from your account`.
`MAILER_TEMPLATES_INVITE` - `string`
URL-Pfad zu einer E-Mail-Vorlage, die beim Einladen eines Benutzers verwendet wird. (z. B. `https://www.example.com/path-to-email-template.html`)
Die Variablen `SiteURL`, `Email` und `ConfirmationURL` sind verfügbar.
Standardinhalt (falls Vorlage nicht verfügbar):```html
<h2>You've been invited</h2>
<p>You've been invited to create an account. Follow the link below to accept.</p>
<p><a href="{{ .ConfirmationURL }}">Accept invitation</a></p>
MAILER_TEMPLATES_CONFIRMATION - string
URL-Pfad zu einer E-Mail-Vorlage, die beim Bestätigen einer Anmeldung verwendet wird. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen SiteURL, Email und ConfirmationURL sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
Follow the link below to confirm this email address and finish signing up.
``` `MAILER_TEMPLATES_RECOVERY` - `string`URL-Pfad zu einer E-Mail-Vorlage, die beim Zurücksetzen eines Passworts verwendet werden soll. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen SiteURL, Email und ConfirmationURL sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
We received a request to reset your password. Follow the link below to choose a new one.
If you didn't request this, you can safely ignore this email.
``` `MAILER_TEMPLATES_MAGIC_LINK` - `string`URL-Pfad zu einer E-Mail-Vorlage, die beim Senden des Magic Links verwendet werden soll. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen SiteURL, Email und ConfirmationURL sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
Follow the link below to sign in. This link expires shortly and can only be used once.
``` `MAILER_TEMPLATES_EMAIL_CHANGE` - `string`URL-Pfad zu einer E-Mail-Vorlage, die beim Bestätigen der Änderung einer E-Mail-Adresse verwendet werden soll. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen SiteURL, Email, NewEmail und ConfirmationURL sind verfügbar.
Standardinhalt (falls keine Vorlage verfügbar ist):```html
Follow the link below to confirm {{ .NewEmail }} as your new email address.
If you didn't request this change, you can safely ignore this email.
``` `MAILER_TEMPLATES_REAUTHENTICATION` - `string`URL-Pfad zu einer E-Mail-Vorlage, die beim erneuten Authentifizieren eines Benutzers verwendet werden soll. (z. B. https://www.example.com/path-to-email-template.html)
Die Variable Token ist verfügbar.
Standardinhalt (falls Vorlage nicht verfügbar):```html
Use the code below to verify your identity. It expires shortly.
{{ .Token }}
``` `MAILER_TEMPLATES_PASSWORD_CHANGED_NOTIFICATION` - `string`URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, wenn ein Benutzer darüber benachrichtigt wird, dass sein Passwort geändert wurde. (z. B. https://www.example.com/path-to-email-template.html)
Email-Variablen sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
The password for your account was recently changed.
If you didn't make this change, reset your password and contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_PASSWORD_CHANGED_ENABLED` - `bool`Ob eine Benachrichtigungs-E-Mail gesendet werden soll, wenn das Passwort eines Benutzers geändert wird. Standardmäßig false.
MAILER_TEMPLATES_EMAIL_CHANGED_NOTIFICATION - string
URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, wenn ein Benutzer benachrichtigt wird, dass seine E-Mail-Adresse geändert wurde. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen Email und OldEmail sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
The email address for your account was changed from {{ .OldEmail }} to {{ .Email }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_EMAIL_CHANGED_ENABLED` - `bool`Gibt an, ob eine Benachrichtigungs-E-Mail gesendet werden soll, wenn die E-Mail-Adresse eines Benutzers geändert wird. Standardmäßig false.
GOTRUE_MAILER_TEMPLATES_PHONE_CHANGED_NOTIFICATION - string
URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, wenn ein Benutzer darüber benachrichtigt wird, dass seine Telefonnummer geändert wurde. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen Email, Phone und OldPhone sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
The phone number for your account was changed from {{ .OldPhone }} to {{ .Phone }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_PHONE_CHANGED_ENABLED` - `bool`Legt fest, ob eine Benachrichtigungs-E-Mail gesendet wird, wenn sich die Telefonnummer eines Benutzers ändert. Standardwert ist false.
GOTRUE_MAILER_TEMPLATES_IDENTITY_LINKED_NOTIFICATION - string
URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, um einen Benutzer zu benachrichtigen, dass eine Anmeldemethode mit seinem Konto verknüpft wurde. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen Email und Provider sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
Your {{ .Provider }} account was linked as a new sign-in method for {{ .Email }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_LINKED_ENABLED` - `bool`Ob eine Benachrichtigungs-E-Mail gesendet werden soll, wenn eine Anmeldemethode mit dem Konto eines Benutzers verknüpft wird. Standardmäßig false.
GOTRUE_MAILER_TEMPLATES_IDENTITY_UNLINKED_NOTIFICATION - string
URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, wenn ein Benutzer darüber informiert wird, dass eine Anmeldemethode von seinem Konto entfernt wurde. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen Email und Provider sind verfügbar.
Standardinhalt (falls Vorlage nicht verfügbar):```html
Your {{ .Provider }} account was removed as a sign-in method for {{ .Email }}.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_IDENTITY_UNLINKED_ENABLED` - `bool`Legt fest, ob eine Benachrichtigungs-E-Mail gesendet werden soll, wenn eine Anmeldemethode vom Konto eines Benutzers entfernt wird. Standardmäßig false.
GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_ENROLLED_NOTIFICATION - string
URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, um einen Benutzer zu benachrichtigen, dass seinem Konto eine neue Verifizierungsmethode hinzugefügt wurde. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen Email und FactorType sind verfügbar.
Standardinhalt (falls die Vorlage nicht verfügbar ist):```html
Sign-in verification method {{ .FactorType }} was added to your account.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_MFA_FACTOR_ENROLLED_ENABLED` - `bool`Gibt an, ob eine Benachrichtigungs-E-Mail gesendet werden soll, wenn einem Benutzerkonto eine neue Verifizierungsmethode hinzugefügt wird. Standardwert ist false.
GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_UNENROLLED_NOTIFICATION - string
URL-Pfad zu einer E-Mail-Vorlage, die verwendet wird, um einen Benutzer zu benachrichtigen, dass eine Verifizierungsmethode aus seinem Konto entfernt wurde. (z. B. https://www.example.com/path-to-email-template.html)
Die Variablen Email und FactorType sind verfügbar.
Standardinhalt (falls Vorlage nicht verfügbar):```html
Sign-in verification method {{ .FactorType }} was removed from your account.
If you didn't make this change, contact support immediately.
``` `GOTRUE_MAILER_NOTIFICATIONS_MFA_FACTOR_UNENROLLED_ENABLED` - `bool`Ob eine Benachrichtigungs-E-Mail gesendet werden soll, wenn eine Verifizierungsmethode vom Konto eines Benutzers entfernt wird. Der Standardwert ist false.
SMS_AUTOCONFIRM - bool
Wenn Sie keine Telefonbestätigung benötigen, können Sie dies auf true setzen. Der Standardwert ist false.
SMS_MAX_FREQUENCY - number
Steuert die Mindestzeit, die vergehen muss, bevor eine weitere SMS-OTP gesendet wird. Der Wert ist die Anzahl der Sekunden. Der Standardwert ist 60 (1 Minute).
SMS_OTP_EXP - number
Steuert, wie lange eine SMS-OTP gültig ist.
SMS_OTP_LENGTH - number
Steuert die Anzahl der Ziffern der gesendeten SMS-OTP.
SMS_PROVIDER - string
Verfügbare Optionen sind: twilio, messagebird, textlocal und vonage
Dann können Sie Ihre twilio-Anmeldedaten verwenden:
SMS_TWILIO_ACCOUNT_SIDSMS_TWILIO_AUTH_TOKENSMS_TWILIO_MESSAGE_SERVICE_SID - kann auf Ihre twilio-Absender-Handynummer gesetzt werdenOder Messagebird-Anmeldedaten, die Sie im Dashboard erhalten können:
SMS_MESSAGEBIRD_ACCESS_KEY - Ihr Messagebird-ZugriffsschlüsselSMS_MESSAGEBIRD_ORIGINATOR - SMS-Absender (Ihre Messagebird-Telefonnummer mit + oder Firmenname)captcha_token und stellt eine Verifizierungsanfrage an den CAPTCHA-Anbieter.SECURITY_CAPTCHA_ENABLED - string
Ob die Captcha-Middleware aktiviert ist
SECURITY_CAPTCHA_PROVIDER - string
Derzeit werden nur die folgenden Optionen unterstützt: hCaptcha und Turnstile
SECURITY_CAPTCHA_SECRET - stringSECURITY_CAPTCHA_TIMEOUT - stringVon Ihrem hcaptcha- oder turnstile-Konto abrufen.
SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION - bool
Erzwingt die erneute Authentifizierung bei Passwortaktualisierung.
GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED - bool
Verwenden Sie dies, um anonyme Anmeldungen zu aktivieren/deaktivieren.
GOTRUE_SECURITY_SB_FORWARDED_FOR_ENABLED - bool
Aktiviert die Weiterleitung von IP-Adressen mithilfe des HTTP-Anforderungsheaders Sb-Forwarded-For. Wenn diese Option aktiviert ist, analysiert Auth den ersten Wert dieses Headers als IP-Adresse und verwendet ihn für die IP-Adressverfolgung und das Ratenlimit. Stellen Sie sicher, dass diesem Header vollständig vertraut wird, bevor Sie diese Funktion aktivieren, indem Sie ihn nur von vertrauenswürdigen Clients oder Proxys übergeben.
Auth stellt die folgenden Endpunkte bereit:
Gibt die öffentlich verfügbaren Einstellungen für diese Auth-Instanz zurück.```json { "external": { "apple": true, "azure": true, "bitbucket": true, "discord": true, "facebook": true, "figma": true, "github": true, "gitlab": true, "google": true, "keycloak": true, "linkedin": true, "notion": true, "slack": true, "snapchat": true, "spotify": true, "twitch": true, "twitter": true, "workos": true }, "disable_signup": false, "autoconfirm": false }
### **POST, PUT /admin/users/<user_id>**
Erstellt (POST) oder aktualisiert (PUT) den Benutzer basierend auf der angegebenen `user_id`. Das Feld `ban_duration` akzeptiert die folgenden Zeiteinheiten: "ns", "us", "ms", "s", "m", "h". Siehe [`time.ParseDuration`](https://pkg.go.dev/time#ParseDuration) für weitere Details zum verwendeten Format.```js
headers:
{
"Authorization": "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" // requires a role claim that can be set in the GOTRUE_JWT_ADMIN_ROLES env var
}
body:
{
"role": "test-user",
"email": "[email protected]",
"phone": "12345678",
"password": "secret", // only if type = signup
"email_confirm": true,
"phone_confirm": true,
"user_metadata": {},
"app_metadata": {},
"ban_duration": "24h" or "none" // to unban a user
}
Gibt den entsprechenden E-Mail-Aktionslink basierend auf dem angegebenen Typ zurück. Die Antwort enthält unter anderem auch die Query-Parameter des Aktionslinks als separate JSON-Felder der Einfachheit halber (zusammen mit dem E-Mail-OTP, aus dem das entsprechende Token generiert wird).```js headers: { "Authorization": "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" // admin role required }
body: { "type": "signup" or "magiclink" or "recovery" or "invite" or "email_change_current" or "email_change_new", "email": "[email protected]", "password": "secret", // only if type = signup "data": { ... }, // only if type = signup "redirect_to": "https://supabase.io" // Redirect URL to send the user to after an email action. Defaults to SITE_URL.
}
Rückgabewerte```js
{
"action_link": "http://localhost:9999/verify?token=TOKEN&type=TYPE&redirect_to=REDIRECT_URL",
"email_otp": "EMAIL_OTP",
"hashed_token": "TOKEN",
"verification_type": "TYPE",
"redirect_to": "REDIRECT_URL",
...
}
Registrieren Sie einen neuen Benutzer mit einer E-Mail-Adresse und einem Passwort.```json { "email": "[email protected]", "password": "secret" }
Rückgabe:```js
{
"id": "11111111-2222-3333-4444-5555555555555",
"email": "[email protected]",
"confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
// if sign up is a duplicate then faux data will be returned
// as to not leak information about whether a given email
// has an account with your service or not
Registriere einen neuen Benutzer mit Telefonnummer und Passwort.```js { "phone": "12345678", // follows the E.164 format "password": "secret" }
Rückgabe:```js
{
"id": "11111111-2222-3333-4444-5555555555555", // if duplicate sign up, this ID will be faux
"phone": "12345678",
"confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
wenn AUTOCONFIRM aktiviert ist und die Registrierung ein Duplikat ist, dann gibt der Endpunkt Folgendes zurück:```json { "code": 400, "msg": "User already registered" }
### **POST /resend**
Ermöglicht einem Benutzer, eine bestehende signup-, sms-, email_change- oder phone_change-OTP erneut zu senden.```json
{
"email": "[email protected]",
"type": "signup"
}
Bitte fügen Sie den zu übersetzenden Markdown-Text nach „INPUT:" ein.```json { "phone": "12345678", "type": "sms" }
Rückgabe:```json
{
"message_id": "msgid123456"
}
Lädt einen neuen Benutzer mit einer E-Mail ein.
Dieser Endpunkt erfordert das service_role- oder supabase_admin-JWT, das als Auth-Bearer-Header gesetzt ist:
z. B.```js headers: { "Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" }
Please provide the Markdown content to translate.```json
{
"email": "[email protected]"
}
Rückgabe:```json { "id": "11111111-2222-3333-4444-5555555555555", "email": "[email protected]", "confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00", "created_at": "2016-05-15T19:53:12.368652374-07:00", "updated_at": "2016-05-15T19:53:12.368652374-07:00", "invited_at": "2016-05-15T19:53:12.368652374-07:00" }
### **POST /verify**
Verifizieren Sie eine Registrierung oder eine Passwortwiederherstellung. Der Typ kann `signup`, `recovery`, `invite`, `magiclink`, `email_change`, `sms` oder `phone_change` sein,
und das `token` ist ein Token, das entweder von `/signup` oder `/recover` zurückgegeben wird.```json
{
"type": "signup",
"token": "confirmation-code-delivered-in-email"
}
password ist für die Registrierungsüberprüfung erforderlich, wenn kein vorhandenes Passwort existiert.
Rückgabe:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token", "type": "signup | recovery | invite | magiclink | email_change | sms | phone_change" }
Verifizieren Sie eine Telefonanmeldung oder SMS-OTP. Der Typ sollte auf `sms` gesetzt werden.```json
{
"type": "sms",
"token": "confirmation-otp-delivered-in-sms",
"redirect_to": "https://supabase.io",
"phone": "phone-number-sms-otp-was-delivered-to"
}
Gibt zurück:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }
### **GET /verify**
Verifiziert eine Registrierung oder eine Passwortwiederherstellung. Der Typ kann `signup`, `recovery`, `magiclink`, `invite` oder `email_change` sein
und das `token` ist ein Token, das entweder von `/signup`, `/recover` oder `/magiclink` zurückgegeben wird.
Abfrageparameter:```json
{
"type": "signup",
"token": "confirmation-code-delivered-in-email",
"redirect_to": "https://supabase.io"
}
Der Benutzer wird angemeldet und weitergeleitet zu:``` SITE_URL/#access_token=jwt-token-representing-the-user&token_type=bearer&expires_in=3600&refresh_token=a-refresh-token&type=invite
Ihre App sollte die Query-Parameter im Fragment erkennen und daraus die Session setzen (supabase-js übernimmt dies automatisch)
Sie können den Parameter `type` verwenden, um den Benutzer im Falle von `invite` oder `recovery` zu einem Formular zum Festlegen des Passworts umzuleiten,
oder im Falle von `signup` eine Konto-bestätigt-/Willkommensnachricht anzeigen, oder ihn zu einem zusätzlichen Onboarding-Prozess weiterleiten
### **POST /otp**
Einmalpasswort. Stellt dem Benutzer einen Magic Link oder ein SMS-OTP bereit, je nachdem ob der Request-Body einen "email"- oder "phone"-Schlüssel enthält.
Wenn `"create_user": true` gesetzt ist, wird der Benutzer nicht automatisch registriert, falls der Benutzer nicht existiert.```js
{
"phone": "12345678" // follows the E.164 format
"create_user": true
}
ODER```js // exactly the same as /magiclink { "email": "[email protected]" "create_user": true }
Rückgabe:```json
{}
Magic Link. Liefert einen Link (z. B. /verify?type=magiclink&token=fgtyuf68ddqdaDd) an den Benutzer basierend auf
der E-Mail-Adresse, mit dem sich ein access_token einlösen lässt.
Standardmäßig können Magic Links nur einmal alle 60 Sekunden gesendet werden.```json { "email": "[email protected]" }
Gibt zurück:```json
{}
Beim Anklicken des Magic-Links erfolgt eine Weiterleitung zu <SITE_URL>#access_token=x&refresh_token=y&expires_in=z&token_type=bearer&type=magiclink (siehe /verify oben)
Passwortwiederherstellung. Versendet eine E-Mail zur Passwortwiederherstellung an den Benutzer anhand der E-Mail-Adresse.
Standardmäßig können Wiederherstellungslinks nur einmal alle 60 Sekunden gesendet werden.```json { "email": "[email protected]" }
Rückgabe:```json
{}
Dies ist ein OAuth2-Endpunkt, der derzeit die Grant-Typen password und refresh_token implementiert
Query-Parameter:``` ?grant_type=password
body:```js
// Email login
{
"email": "[email protected]",
"password": "somepassword"
}
// Phone login
{
"phone": "12345678",
"password": "somepassword"
}
oder
Abfrageparameter:``` grant_type=refresh_token
body:```json
{
"refresh_token": "a-refresh-token"
}
Sobald Sie ein Zugriffstoken haben, können Sie auf die Methoden zugreifen, die eine Authentifizierung erfordern,
indem Sie den Header Authorization: Bearer YOUR_ACCESS_TOKEN_HERE setzen.
Rückgabe:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }
### **GET /user**
Ruft das JSON-Objekt für den angemeldeten Benutzer ab (erfordert Authentifizierung)
Gibt zurück:```json
{
"id": "11111111-2222-3333-4444-5555555555555",
"email": "[email protected]",
"confirmation_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
Aktualisiert einen Benutzer (erfordert Authentifizierung). Abgesehen vom Ändern von E-Mail/Passwort kann diese Methode verwendet werden, um benutzerdefinierte Benutzerdaten festzulegen. Das Ändern der E-Mail führt dazu, dass ein Magic Link gesendet wird.```json { "email": "[email protected]", "password": "new-password", "phone": "+123456789", "data": { "key": "value", "number": 10, "admin": false } }
Rückgabe:```json
{
"id": "11111111-2222-3333-4444-5555555555555",
"email": "[email protected]",
"email_change_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"phone": "+123456789",
"phone_change_sent_at": "2016-05-15T20:49:40.882805774-07:00",
"created_at": "2016-05-15T19:53:12.368652374-07:00",
"updated_at": "2016-05-15T19:53:12.368652374-07:00"
}
Wenn GOTRUE_SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION aktiviert ist, muss sich der Benutzer zuerst erneut authentifizieren.```json
{
"password": "new-password",
"nonce": "123456"
}
### **GET /reauthenticate**
Sendet ein Nonce an die E-Mail (bevorzugt) oder Telefonnummer des Benutzers. Dieser Endpunkt setzt voraus, dass der Benutzer zuerst angemeldet/authentifiziert ist. Der Benutzer muss entweder eine E-Mail-Adresse oder eine Telefonnummer haben, damit das Nonce erfolgreich gesendet werden kann.```js
headers: {
"Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO"
}
Meldet einen Benutzer ab (erfordert Authentifizierung).
Dies widerruft alle Refresh-Tokens für den Benutzer. Beachten Sie, dass die JWT-Tokens für die zustandslose Authentifizierung weiterhin gültig bleiben, bis sie ablaufen.
access_token vom externen OAuth-Anbieter abrufen
Query-Parameter:``` provider=apple | azure | bitbucket | discord | facebook | figma | github | gitlab | google | keycloak | linkedin | notion | slack | snapchat | spotify | twitch | twitter | workos
scopes=<optional additional scopes depending on the provider (email and name are requested by default)>
Leitet zum Anbieter weiter und dann zu `/callback`
Für die Apple-spezifische Einrichtung siehe: <https://github.com/supabase/auth#apple-oauth>
### **GET /callback**
Der externe Anbieter sollte zu diesem Endpunkt weiterleiten.
Leitet weiter zu `<GOTRUE_SITE_URL>#access_token=<access_token>&refresh_token=<refresh_token>&provider_token=<provider_oauth_token>&expires_in=3600&provider=<provider_name>`
Wenn zusätzliche Scopes angefordert wurden, wird `provider_token` befüllt. Sie können dies verwenden, um zusätzliche Daten vom Anbieter abzurufen oder mit dessen Diensten zu interagieren.
twitterworkos