Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
auth — API на основе JWT для управления пользователями и выдачи JWT-токенов | Kitploit
Инструменты/GitHubGitHub/supabase/auth
Аутентификация и авторизацияУправление идентификациейУправление идентификацией и доступом (IAM)Аутентификация
GitHubsupabase/auth

auth

API на основе JWT для управления пользователями и выдачи JWT-токенов

Репозиторий
2.5k7453 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
Сайт

Auth - Аутентификация и управление пользователями от Supabase

Coverage Status

Auth — это сервер аутентификации и управления пользователями, написанный на Go, который обеспечивает работу таких функций Supabase, как:

  • Выпуск JWT
  • Безопасность на уровне строк (Row Level Security) с PostgREST
  • Управление пользователями
  • Вход по email, паролю, magic link, номеру телефона
  • Вход через внешних провайдеров (Google, Apple, Facebook, Discord, ...)

Изначально он основан на отличном коде GoTrue от Netlify, однако с тех пор обе реализации значительно разошлись в возможностях и функциональности.

Если вы хотите внести вклад в проект, пожалуйста, обратитесь к руководству по внесению вклада.

Содержание

  • Быстрый старт
  • Запуск в продакшене
  • Конфигурация
  • Эндпоинты

Быстрый старт

Создайте файл .env для хранения собственных переменных окружения. См. example.env

  1. Запустите локальную базу данных Postgres в контейнере Postgres: docker-compose -f docker-compose-dev.yml up postgres
  2. Соберите бинарный файл auth: make build . Вы должны увидеть вывод, похожий на этот:```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-arm64
root@kitploit:~
3. Выполните бинарный файл auth: `./auth`

### Если у вас установлен Docker

Создайте файл `.env.docker` для хранения собственных переменных окружения. См. [`example.docker.env`](https://github.com/supabase/auth/blob/HEAD/example.docker.env)

1. `make build`
2. `make dev`
3. `docker ps` должен показать два Docker-контейнера (`auth-auth-1` и `auth-postgres-1`)
4. Вот и всё! Перейдите к [конечной точке проверки состояния](http://localhost:9999/health), чтобы убедиться, что auth запущен.

## Запуск в производственной среде

Запуск сервера аутентификации в производственной среде — непростая задача. Мы
рекомендуем использовать [Supabase Auth](https://supabase.com/auth), который регулярно
получает обновления безопасности.

В противном случае убедитесь, что вы настроили процесс своевременного обновления до
последней версии. Это можно сделать, следя за этим репозиторием, в частности за
разделами [Releases](https://github.com/supabase/auth/releases) и [Security
Advisories](https://github.com/supabase/auth/security/advisories).

### Обратная совместимость

Auth использует схему [Semantic Versioning](https://semver.org). Ниже приведены
дополнительные разъяснения гарантий обратной совместимости:

**Совместимость Go API**

Auth не предназначен для использования в качестве библиотеки Go. Нет никаких гарантий
обратной совместимости API при таком использовании, независимо от того, какой номер
версии изменяется.

**Патч**

Изменения патч-версии гарантируют обратную совместимость с:

- объектами базы данных (таблицы, столбцы, индексы, функции).
- REST API
- структурой JWT
- конфигурацией

Гарантированные примеры:

- Столбец не изменит свой тип.
- Таблица не изменит свой первичный ключ.
- Индекс не будет удалён.
- Ограничение уникальности не будет удалено.
- REST API не будет удалён.
- Параметры REST API будут работать так же, как и раньше (или лучше, если ошибка
  была исправлена).
- Конфигурация не изменится.

Негарантированные примеры:

- Таблица может добавить новые столбцы.
- Столбцы в таблице могут быть переупорядочены.
- Неуникальные ограничения могут быть удалены (проверки на уровне базы данных, null, значения
  по умолчанию).
- JWT может добавлять новые свойства.

**Минорная версия**

Изменения минорной версии гарантируют обратную совместимость с:

- REST API
- структурой JWT
- конфигурацией

Исключения из этих гарантий допускаются только в тех случаях, когда обнаружены
серьёзные проблемы безопасности, которые невозможно устранить иным способом.

Гарантированные примеры:

- Существующие API могут быть объявлены устаревшими, но продолжат работать в течение следующих нескольких минорных
  выпусков версий.
- Изменения конфигурации могут быть объявлены устаревшими, но продолжат работать в течение следующих
  нескольких минорных выпусков версий.
- Уже выпущенные JWT будут приниматься, но новые JWT могут иметь другую
  структуру (но обычно аналогичную).

Негарантированные примеры:

- Удаление полей JWT после уведомления об устаревании.
- Удаление некоторых API после уведомления об устаревании.
- Удаление входа через внешних провайдеров после уведомления об устаревании.
- Удаление, усечение, существенные изменения схемы таблиц, индексов, представлений,
  функций.

Мы стремимся предоставлять уведомление об устаревании в журналах выполнения как минимум
для двух мажорных выпусков версий или в течение двух недель, если выходит несколько
релизов. Совместимость будет гарантироваться, пока уведомление активно.

**Мажорная версия**

Изменения мажорной версии не гарантируют обратной совместимости с
предыдущими версиями.

### Унаследованные функции

Некоторые унаследованные функции из кодовой базы Netlify не поддерживаются
Supabase и могут быть удалены без предварительного уведомления в будущем. Вот
полный список этих функций:

1. Мультиарендность через таблицу `instances`, т.е. `GOTRUE_MULTI_INSTANCE_MODE`
   параметр конфигурации.
2. Системный пользователь (пользователь с нулевым UUID).
3. Супер-администратор через столбец `is_super_admin`.
4. Информация о группах в JWT через `GOTRUE_JWT_ADMIN_GROUP_NAME` и другие
   поля конфигурации.
5. Подпись JWT. Supabase Auth поддерживает асимметричные ключи (RS256 по умолчанию;
   ECC/Ed25519 опционально). HS256 по-прежнему поддерживается для совместимости, но
   рекомендуется перейти на асимметричные ключи для упрощения проверки и
   ротации. Будущие удаления будут объявлены в журнале изменений. См.
   [JWT Signing Keys](https://supabase.com/docs/guides/auth/signing-keys) и
   [JWTs guide](https://supabase.com/docs/guides/auth/jwts) для подробностей.

Обратите внимание, что это не исчерпывающий список, и он может измениться.

### Рекомендации при самостоятельном размещении

Вот несколько рекомендаций, которым следует следовать при самостоятельном размещении,
чтобы обеспечить обратную совместимость с Auth:

1. Не изменяйте схему, управляемую Auth. Вы можете просмотреть все
   миграции в каталоге `migrations`.
2. Не полагайтесь на схему и структуру данных в базе данных. Всегда используйте
   API Auth и JWT для получения информации о пользователях.
3. Всегда запускайте Auth за прокси с поддержкой TLS, например балансировщиком нагрузки, CDN,
   nginx или другим подобным программным обеспечением.

## Конфигурация

Вы можете настроить Auth, используя файл конфигурации `.env`,
переменные окружения или их комбинацию. Переменные окружения имеют префикс `GOTRUE_` и всегда имеют приоритет над значениями, указанными в файле.

### Верхний уровень```properties
GOTRUE_SITE_URL=https://example.netlify.com/

SITE_URL - string обязательно

Базовый URL, по которому расположен ваш сайт. В настоящее время используется в сочетании с другими настройками для формирования URL-адресов, используемых в электронных письмах. Любой URI, у которого общий хост с SITE_URL, является допустимым значением для параметров redirect_to (см. /authorize и т.д.).

URI_ALLOW_LIST - string

Список URI, разделённых запятыми (например, "https://foo.example.com,https://*.foo.example.com,https://bar.example.com"), которые разрешены в качестве допустимых направлений redirect_to. По умолчанию — []. Поддерживает сопоставление с подстановочными знаками с помощью glob-шаблонов. Например, https://*.foo.example.com разрешит принимать https://a.foo.example.com и https://b.foo.example.com. Glob-шаблоны также поддерживаются для поддоменов. Например, https://foo.example.com/* разрешит принимать https://foo.example.com/page1 и https://foo.example.com/page2.

Дополнительные распространённые glob-шаблоны см. по следующей ссылке.

OPERATOR_TOKEN - string только для мультиинстансного режима

Общий секрет с оператором (обычно Netlify) для этого микросервиса. Используется для проверки того, что запросы были проксированы через оператора и значениям полезной нагрузки можно доверять.

DISABLE_SIGNUP - bool

Когда регистрация отключена, единственный способ создать новых пользователей — через приглашения. По умолчанию — false, все регистрации включены.

GOTRUE_EXTERNAL_EMAIL_ENABLED - bool

Используйте это для отключения регистрации по электронной почте (пользователи по-прежнему могут использовать внешних OAuth-провайдеров для регистрации / входа)

GOTRUE_EXTERNAL_PHONE_ENABLED - bool

Используйте это для отключения регистрации по телефону (пользователи по-прежнему могут использовать внешних OAuth-провайдеров для регистрации / входа)

GOTRUE_RATE_LIMIT_HEADER - string

Заголовок, на основе которого ограничивается частота запросов к конечной точке /token. Ожидается, что этот заголовок будет устанавливаться доверенным вышестоящим прокси (например, Kong или Envoy). Такие заголовки, как x-forwarded-for, могут быть подделаны, и им нельзя доверять при ограничении частоты запросов, если они передаются напрямую клиентом.

GOTRUE_RATE_LIMIT_EMAIL_SENT - string

Ограничивает количество писем, отправляемых в час, на следующих конечных точках: /signup, /invite, /magiclink, /recover, /otp и /user.

GOTRUE_PASSWORD_MIN_LENGTH - int

Минимальная длина пароля, по умолчанию 6.

GOTRUE_PASSWORD_REQUIRED_CHARACTERS - строка наборов символов, разделённых :. Пароль должен содержать хотя бы один символ из каждого набора, чтобы быть принятым. Чтобы использовать символ :, экранируйте его с помощью \.

GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED - bool

Если включена ротация refresh-токенов, auth автоматически обнаружит вредоносные попытки повторного использования отозванного refresh-токена. При обнаружении вредоносной попытки GoTrue немедленно отзывает все токены, произошедшие от проблемного токена.

GOTRUE_SECURITY_REFRESH_TOKEN_REUSE_INTERVAL - string

Эта настройка применима только в том случае, если включён параметр GOTRUE_SECURITY_REFRESH_TOKEN_ROTATION_ENABLED. Интервал повторного использования refresh-токена позволяет обменивать refresh-токен несколько раз в течение этого интервала для поддержки конкурентности или проблем с офлайн-доступом. В течение интервала повторного использования auth не будет рассматривать использование отозванного токена как вредоносную попытку и просто вернёт дочерний refresh-токен.

Повторно использовать можно только предыдущий отозванный токен. Использование старого refresh-токена задолго до текущего действительного refresh-токена вызовет обнаружение повторного использования.

API```properties

GOTRUE_API_HOST=localhost PORT=9999 API_EXTERNAL_URL=http://localhost:9999

root@kitploit:~
`API_HOST` - `string`

Имя хоста для прослушивания.

`PORT` (no prefix) / `API_PORT` - `number`

Номер порта для прослушивания. По умолчанию — `8081`.

`API_ENDPOINT` - `string` _Только для многокомпонентного режима_

Управляет конечной точкой, через которую Netlify может обращаться к этому API.

`API_EXTERNAL_URL` - `string` **обязательно**

URL, по которому может быть доступен GoTrue.

`REQUEST_ID_HEADER` - `string`

Если вы хотите унаследовать идентификатор запроса из входящего запроса, укажите его имя в этом значении.

### База данных```properties
GOTRUE_DB_DRIVER=postgres
DATABASE_URL=root@localhost/auth

DB_DRIVER - string обязательно

Выбирает диалект базы данных. Должно быть postgres.

DATABASE_URL (без префикса) / DB_DATABASE_URL - string обязательно

Строка подключения к базе данных.

GOTRUE_DB_MAX_POOL_SIZE - int

Задаёт максимальное количество открытых соединений с базой данных. По умолчанию 0, что эквивалентно «неограниченному» числу соединений.

DB_NAMESPACE - string

Добавляет префикс ко всем именам таблиц.

Примечание о миграциях

Миграции применяются автоматически при запуске ./auth. Однако у вас также есть возможность перезапустить миграции следующими способами:

  • Если собрано локально: ./auth migrate
  • С использованием Docker: docker run --rm auth gotrue migrate

Логирование```properties

LOG_LEVEL=debug # available without GOTRUE prefix (exception) GOTRUE_LOG_FILE=/var/log/go/auth.log

root@kitploit:~
`LOG_LEVEL` — `string`

Управляет тем, какие уровни логирования выводятся. Выберите `panic`, `fatal`, `error`, `warn`, `info` или `debug`. По умолчанию — `info`.

`LOG_FILE` — `string`

Если вы хотите записывать логи в файл, укажите в `log_file` допустимый путь к файлу.

### Наблюдаемость

В Auth встроена базовая наблюдаемость. Он может экспортировать
метрики и трейсы [OpenTelemetry](https://opentelemetry.io) в коллектор.

#### Трейсинг

Чтобы включить трейсинг, настройте эти переменные:

`GOTRUE_TRACING_ENABLED` — `bool`

`GOTRUE_TRACING_EXPORTER` — `string`, поддерживается только `opentelemetry`

Убедитесь, что вы также настроили конфигурацию [OpenTelemetry
Exporter](https://opentelemetry.io/docs/reference/specification/protocol/exporter/)
для вашего коллектора или сервиса.

Например, если вы используете
[Honeycomb.io](https://docs.honeycomb.io/getting-data-in/opentelemetry/go-distro/#using-opentelemetry-without-the-honeycomb-distribution),
вам следует задать эти стандартные переменные OTLP OpenTelemetry:```
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"

Метрики

Чтобы включить метрики, настройте эти переменные:

GOTRUE_METRICS_ENABLED - boolean

GOTRUE_METRICS_EXPORTER - string, поддерживаются только opentelemetry и prometheus

Убедитесь, что вы также настроили конфигурацию OpenTelemetry Exporter для вашего коллектора или сервиса.

Если вы используете экспортер prometheus, хост и порт сервера можно настроить с помощью этих стандартных переменных OpenTelemetry:

OTEL_EXPORTER_PROMETHEUS_HOST - IP-адрес, по умолчанию 0.0.0.0

OTEL_EXPORTER_PROMETHEUS_PORT - номер порта, по умолчанию 9100

Метрики экспортируются по пути / на сервере.

Если вы используете экспортер opentelemetry, метрики отправляются в коллектор.

Например, если вы используете Honeycomb.io, вам следует задать эти стандартные переменные OTLP OpenTelemetry:``` 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"

root@kitploit:~
Обратите внимание, что Honeycomb.io требует платного тарифа для приёма метрик.

Если вам нужно отладить проблему с трейсами или метриками, которые не отправляются, вы можете установить `DEBUG=true`, чтобы получить больше информации от OpenTelemetry SDK.

#### Пользовательские атрибуты ресурсов

При использовании экспортёра трейсов или метрик OpenTelemetry вы можете задать пользовательские атрибуты ресурсов с помощью [стандартной переменной окружения `OTEL_RESOURCE_ATTRIBUTES`](https://opentelemetry.io/docs/reference/specification/resource/sdk/#specifying-resource-information-via-an-environment-variable).

Предоставляется атрибут по умолчанию `auth.version`, содержащий версию сборки.

#### Трассировка HTTP-маршрутов

Все HTTP-вызовы к Auth API трассируются. Маршруты используют параметризованную версию маршрута, а значения параметров маршрута можно найти в атрибуте спана `http.route.params.<route-key>`.

Например, следующий запрос:```
GET /admin/users/4acde936-82dc-4552-b851-831fb8ce0927/

будет отслеживаться как:``` http.method = GET http.route = /admin/users/{user_id} http.route.params.user_id = 4acde936-82dc-4552-b851-831fb8ce0927

root@kitploit:~
#### Метрики Go runtime и HTTP

Все метрики Go runtime предоставляются. Некоторые HTTP-метрики также собираются по умолчанию.

### JSON Web Tokens (JWT)```properties
GOTRUE_JWT_SECRET=supersecretvalue
GOTRUE_JWT_EXP=3600
GOTRUE_JWT_AUD=netlify

JWT_SECRET - string обязательно

Секрет, используемый для подписи JWT-токенов.

JWT_EXP - number

Сколько времени токены действительны, в секундах. По умолчанию: 3600 (1 час).

JWT_AUD - string

Аудитория JWT по умолчанию. Используйте аудитории для группировки пользователей.

JWT_ADMIN_GROUP_NAME - string

Название группы администраторов (если включено). По умолчанию: admin.

JWT_DEFAULT_GROUP_NAME - string

Группа по умолчанию, в которую назначаются все новые пользователи.

Внешние провайдеры аутентификации

Мы поддерживаем внешнюю аутентификацию через apple, azure, bitbucket, discord, facebook, figma, github, gitlab, google, keycloak, linkedin, notion, snapchat, spotify, slack, twitch, и .

Используйте эти названия в качестве ключей внутри external, чтобы настроить каждого провайдера отдельно.```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

root@kitploit:~
No external providers are required, but you must provide the required values if you choose to enable any.

`EXTERNAL_X_ENABLED` - `bool`

Whether this external provider is enabled or not

`EXTERNAL_X_CLIENT_ID` - `string` **required**

The OAuth2 Client ID registered with the external provider.

`EXTERNAL_X_SECRET` - `string` **required**

The OAuth2 Client Secret provided by the external provider when you registered.

`EXTERNAL_X_REDIRECT_URI` - `string` **required**

The URI a OAuth2 provider will redirect to with the `code` and `state` values.

`EXTERNAL_X_URL` - `string`

The base URL used for constructing the URLs to request authorization and access tokens. Used by `gitlab` and `keycloak`. For `gitlab` it defaults to `https://gitlab.com`. For `keycloak` you need to set this to your instance, for example: `https://keycloak.example.com/realms/myrealm`

#### Network hardening

Configuring an external authentication provider causes Auth to make outbound HTTP requests to that provider's authorization, token, and userinfo endpoints. Configuring a provider either via `GOTRUE_EXTERNAL_*` settings or an admin API is an administrative action, and doing so implies trust in the hosts and URLs that will be contacted.

The network Auth runs in should be hardened so these outbound connections cannot reach internal-only resources you don't want exposed, such as `localhost`/loopback addresses or cloud metadata endpoints (e.g. `169.254.169.254`). This matters most for providers with admin-configurable or discoverable endpoints (e.g. custom OAuth/OIDC providers), where a misconfigured or malicious URL could otherwise be used to reach internal infrastructure.

#### Apple OAuth

To try out external authentication with Apple locally, you will need to do the following:

1. Remap localhost to \<my_custom_dns \> in your `/etc/hosts` config.
2. Configure auth to serve HTTPS traffic over localhost by replacing `ListenAndServe` in [api.go](https://github.com/supabase/auth/blob/HEAD/internal/api/api.go) with:   ```
      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")
        }
    }
  1. Сгенерируйте файлы crt и key. См. здесь для получения дополнительной информации.
  2. Сгенерируйте GOTRUE_EXTERNAL_APPLE_SECRET, следуя этому руководству!

Электронная почта

Отправка электронных писем не обязательна, но настоятельно рекомендуется для восстановления пароля. Если эта функция включена, необходимо указать требуемые значения ниже.```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"

root@kitploit:~
`SMTP_ADMIN_EMAIL` - `string` **required**

Адрес электронной почты `From` для всех отправляемых писем.

`SMTP_HOST` - `string` **required**

Имя хоста почтового сервера, через который отправляются письма.

`SMTP_PORT` - `number` **required**

Номер порта для подключения к почтовому серверу.

`SMTP_USER` - `string`

Если почтовый сервер требует аутентификации — имя пользователя.

`SMTP_PASS` - `string`

Если почтовый сервер требует аутентификации — пароль.

`SMTP_MAX_FREQUENCY` - `number`

Управляет минимальным промежутком времени, который должен пройти перед отправкой очередного письма с подтверждением регистрации или сбросом пароля. Значение указывается в секундах. По умолчанию — 900 (15 минут).

`SMTP_SENDER_NAME` - `string`

Задаёт имя отправителя. По умолчанию используется `SMTP_ADMIN_EMAIL`, если имя не указано.

`MAILER_AUTOCONFIRM` - `bool`

Если подтверждение email не требуется, можно установить значение `true`. По умолчанию — `false`.

`MAILER_OTP_EXP` - `number`

Управляет сроком действия ссылки в письме или одноразового пароля (OTP).

`MAILER_URLPATHS_INVITE` - `string`

Путь URL, используемый в письме с приглашением пользователя. По умолчанию — `/verify`.

`MAILER_URLPATHS_CONFIRMATION` - `string`

Путь URL, используемый в письме с подтверждением регистрации. По умолчанию — `/verify`.

`MAILER_URLPATHS_RECOVERY` - `string`

Путь URL, используемый в письме для сброса пароля. По умолчанию — `/verify`.

`MAILER_URLPATHS_EMAIL_CHANGE` - `string`

Путь URL, используемый в письме с подтверждением смены email. По умолчанию — `/verify`.

`MAILER_SUBJECTS_INVITE` - `string`

Тема письма для приглашения пользователя. По умолчанию — `You've been invited`.

`MAILER_SUBJECTS_CONFIRMATION` - `string`

Тема письма для подтверждения регистрации. По умолчанию — `Confirm your email address`.

`MAILER_SUBJECTS_RECOVERY` - `string`

Тема письма для сброса пароля. По умолчанию — `Reset your password`.

`MAILER_SUBJECTS_MAGIC_LINK` - `string`

Тема письма для волшебной ссылки (magic link). По умолчанию — `Your sign-in link`.

`MAILER_SUBJECTS_EMAIL_CHANGE` - `string`

Тема письма для подтверждения смены email. По умолчанию — `Confirm your new email address`.

`MAILER_SUBJECTS_REAUTHENTICATION` - `string`

Тема письма для повторной аутентификации. По умолчанию — `{{ .Token }} is your verification code`.

`MAILER_SUBJECTS_PASSWORD_CHANGED_NOTIFICATION` - `string`

Тема письма для уведомления об изменении пароля. По умолчанию — `Your password was changed`.

`MAILER_SUBJECTS_EMAIL_CHANGED_NOTIFICATION` - `string`

Тема письма для уведомления об изменении email. По умолчанию — `Your email address was changed`.

`GOTRUE_MAILER_SUBJECTS_PHONE_CHANGED_NOTIFICATION` - `string`

Тема письма для уведомления об изменении номера телефона. По умолчанию — `Your phone number was changed`.

`GOTRUE_MAILER_SUBJECTS_IDENTITY_LINKED_NOTIFICATION` - `string`

Тема письма для уведомления о привязке способа входа. По умолчанию — `A new sign-in method was linked to your account`.

`GOTRUE_MAILER_SUBJECTS_IDENTITY_UNLINKED_NOTIFICATION` - `string`

Тема письма для уведомления об отвязке способа входа. По умолчанию — `A sign-in method was removed from your account`.

`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_ENROLLED_NOTIFICATION` - `string`

Тема письма для уведомления о добавлении метода проверки. По умолчанию — `A new verification method was added to your account`.

`GOTRUE_MAILER_SUBJECTS_MFA_FACTOR_UNENROLLED_NOTIFICATION` - `string`

Тема письма для уведомления об удалении метода проверки. По умолчанию — `A verification method was removed from your account`.

`MAILER_TEMPLATES_INVITE` - `string`

URL-путь к шаблону письма, используемому при приглашении пользователя. (например, `https://www.example.com/path-to-email-template.html`)
Доступны переменные `SiteURL`, `Email` и `ConfirmationURL`.

Содержимое по умолчанию (если шаблон недоступен):```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-путь к шаблону электронного письма, используемому при подтверждении регистрации. (например, https://www.example.com/path-to-email-template.html) Доступны переменные SiteURL, Email и ConfirmationURL.

Содержимое по умолчанию (если шаблон недоступен):```html

Confirm your email address

Follow the link below to confirm this email address and finish signing up.

Confirm email address

``` `MAILER_TEMPLATES_RECOVERY` - `string`

URL-путь к шаблону электронного письма, используемому при сбросе пароля. (например, https://www.example.com/path-to-email-template.html) Доступны переменные SiteURL, Email и ConfirmationURL.

Содержимое по умолчанию (если шаблон недоступен):```html

Reset your password

We received a request to reset your password. Follow the link below to choose a new one.

Reset password

If you didn't request this, you can safely ignore this email.

``` `MAILER_TEMPLATES_MAGIC_LINK` - `string`

URL-путь к шаблону электронного письма, используемому при отправке magic link. (например, https://www.example.com/path-to-email-template.html) Доступны переменные SiteURL, Email и ConfirmationURL.

Содержимое по умолчанию (если шаблон недоступен):```html

Your sign-in link

Follow the link below to sign in. This link expires shortly and can only be used once.

Sign in

``` `MAILER_TEMPLATES_EMAIL_CHANGE` - `string`

URL-путь к шаблону электронного письма, используемому при подтверждении смены адреса электронной почты. (например, https://www.example.com/path-to-email-template.html) Переменные SiteURL, Email, NewEmail и ConfirmationURL доступны.

Содержимое по умолчанию (если шаблон недоступен):```html

Confirm your new email address

Follow the link below to confirm {{ .NewEmail }} as your new email address.

Confirm new email address

If you didn't request this change, you can safely ignore this email.

``` `MAILER_TEMPLATES_REAUTHENTICATION` - `string`

URL-путь к шаблону электронного письма, используемому при повторной аутентификации пользователя. (например, https://www.example.com/path-to-email-template.html) Доступна переменная Token.

Содержимое по умолчанию (если шаблон недоступен):```html

Your verification code

Use the code below to verify your identity. It expires shortly.

{{ .Token }}

``` `MAILER_TEMPLATES_PASSWORD_CHANGED_NOTIFICATION` - `string`

URL-путь к шаблону электронного письма, используемому при уведомлении пользователя о смене пароля. (например, https://www.example.com/path-to-email-template.html) Доступны переменные Email.

Содержимое по умолчанию (если шаблон недоступен):```html

Your password was changed

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`

Нужно ли отправлять уведомление по электронной почте при изменении пароля пользователя. По умолчанию — false.

MAILER_TEMPLATES_EMAIL_CHANGED_NOTIFICATION - string

URL-путь к шаблону электронного письма, используемому для уведомления пользователя о том, что его адрес электронной почты был изменён. (например, https://www.example.com/path-to-email-template.html). Доступны переменные Email и OldEmail.

Содержимое по умолчанию (если шаблон недоступен):```html

Your email address was changed

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`

Следует ли отправлять уведомление по электронной почте при изменении адреса электронной почты пользователя. По умолчанию — false.

GOTRUE_MAILER_TEMPLATES_PHONE_CHANGED_NOTIFICATION - string

URL-путь к шаблону электронного письма, используемому для уведомления пользователя об изменении его номера телефона. (например, https://www.example.com/path-to-email-template.html) Доступны переменные Email, Phone и OldPhone.

Содержимое по умолчанию (если шаблон недоступен):```html

Your phone number was changed

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`

Отправлять ли уведомление по электронной почте при изменении номера телефона пользователя. По умолчанию false.

GOTRUE_MAILER_TEMPLATES_IDENTITY_LINKED_NOTIFICATION - string

URL-путь к шаблону электронного письма, используемому при уведомлении пользователя о том, что к его учетной записи привязан способ входа. (например, https://www.example.com/path-to-email-template.html) Доступны переменные Email и Provider.

Содержимое по умолчанию (если шаблон недоступен):```html

A new sign-in method was linked

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`

Следует ли отправлять уведомление по электронной почте, когда к учётной записи пользователя привязан способ входа. По умолчанию false.

GOTRUE_MAILER_TEMPLATES_IDENTITY_UNLINKED_NOTIFICATION - string

URL-путь к шаблону письма, используемому при уведомлении пользователя о том, что способ входа был удалён из его учётной записи. (например, https://www.example.com/path-to-email-template.html) Переменные Email и Provider доступны.

Содержимое по умолчанию (если шаблон недоступен):```html

A sign-in method was removed

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`

Следует ли отправлять уведомление по электронной почте, когда метод входа удаляется из учётной записи пользователя. По умолчанию — false.

GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_ENROLLED_NOTIFICATION - string

Путь URL к шаблону электронного письма для уведомления пользователя о том, что к его учётной записи добавлен новый метод проверки. (например, https://www.example.com/path-to-email-template.html) Доступны переменные Email и FactorType.

Содержимое по умолчанию (если шаблон недоступен):```html

A new verification method was added

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`

Определяет, отправлять ли уведомление по электронной почте, когда к учётной записи пользователя добавляется новый метод проверки. По умолчанию — false.

GOTRUE_MAILER_TEMPLATES_MFA_FACTOR_UNENROLLED_NOTIFICATION - string

Путь URL к шаблону электронного письма, используемому для уведомления пользователя о том, что из его учётной записи был удалён метод проверки. (например, https://www.example.com/path-to-email-template.html) Доступны переменные Email и FactorType.

Содержимое по умолчанию (если шаблон недоступен):```html

A verification method was removed

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`

Определяет, отправлять ли уведомление по электронной почте, когда метод проверки удаляется из учётной записи пользователя. По умолчанию — false.

Аутентификация по телефону

SMS_AUTOCONFIRM - bool

Если подтверждение по телефону не требуется, вы можете установить значение true. По умолчанию — false.

SMS_MAX_FREQUENCY - number

Управляет минимальным промежутком времени, который должен пройти перед отправкой следующего SMS-OTP. Значение указывается в секундах. По умолчанию — 60 (1 минута).

SMS_OTP_EXP - number

Управляет сроком действия SMS-OTP.

SMS_OTP_LENGTH - number

Управляет количеством цифр в отправляемом SMS-OTP.

SMS_PROVIDER - string

Доступные варианты: twilio, messagebird, textlocal и vonage

Затем вы можете использовать свои учётные данные Twilio:

  • SMS_TWILIO_ACCOUNT_SID
  • SMS_TWILIO_AUTH_TOKEN
  • SMS_TWILIO_MESSAGE_SERVICE_SID — можно указать номер мобильного телефона отправителя Twilio

Или учётные данные Messagebird, которые можно получить в панели управления:

  • SMS_MESSAGEBIRD_ACCESS_KEY — ваш ключ доступа Messagebird
  • SMS_MESSAGEBIRD_ORIGINATOR — отправитель SMS (ваш номер телефона Messagebird с + или название компании)

CAPTCHA

  • Если включено, CAPTCHA будет проверять тело запроса на наличие поля captcha_token и отправлять запрос на проверку провайдеру CAPTCHA.

SECURITY_CAPTCHA_ENABLED - string

Включено ли промежуточное ПО CAPTCHA.

SECURITY_CAPTCHA_PROVIDER - string

пока поддерживаются только следующие варианты: hCaptcha и Turnstile

  • SECURITY_CAPTCHA_SECRET - string
  • SECURITY_CAPTCHA_TIMEOUT - string

Получите их из учётной записи hCaptcha или Turnstile.

Повторная аутентификация

SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION - bool

Требовать повторную аутентификацию при обновлении пароля.

Анонимные входы

GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED - bool

Используйте это для включения/отключения анонимных входов.

Пересылка IP-адресов

GOTRUE_SECURITY_SB_FORWARDED_FOR_ENABLED - bool

Включает пересылку IP-адреса с использованием HTTP-заголовка Sb-Forwarded-For. Когда эта функция включена, Auth будет интерпретировать первое значение этого заголовка как IP-адрес и использовать его для отслеживания IP-адресов и ограничения частоты запросов. Перед включением этой функции убедитесь, что этому заголовку можно полностью доверять, передавая его только от проверенных клиентов или прокси.

Эндпоинты

Auth предоставляет следующие эндпоинты:

GET /settings

Возвращает общедоступные настройки этого экземпляра Auth.```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 }

root@kitploit:~
### **POST, PUT /admin/users/<user_id>**

Создаёт (POST) или обновляет (PUT) пользователя на основе указанного `user_id`. Поле `ban_duration` принимает следующие единицы времени: "ns", "us", "ms", "s", "m", "h". Подробнее об используемом формате см. [`time.ParseDuration`](https://pkg.go.dev/time#ParseDuration).```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
}

POST /admin/generate_link

Возвращает соответствующую ссылку действия в email на основе указанного типа. Помимо прочего, ответ также содержит параметры запроса (query params) этой ссылки действия в виде отдельных полей JSON для удобства (вместе с email OTP, из которого генерируется соответствующий токен).```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.

}

root@kitploit:~
Возвращает```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",
  ...
}

POST /signup

Регистрация нового пользователя с адресом электронной почты и паролем.```json { "email": "[email protected]", "password": "secret" }

root@kitploit:~
возвращает:```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

Зарегистрируйте нового пользователя с номером телефона и паролем.```js { "phone": "12345678", // follows the E.164 format "password": "secret" }

root@kitploit:~
Возвращает:```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"
}

если AUTOCONFIRM включен и регистрация является дубликатом, то endpoint вернет:```json { "code": 400, "msg": "User already registered" }

root@kitploit:~
### **POST /resend**

Позволяет пользователю повторно отправить существующий OTP для signup, sms, email_change или phone_change.```json
{
  "email": "[email protected]",
  "type": "signup"
}

The input content is empty — there is no text to translate. Please provide the chunk content.```json { "phone": "12345678", "type": "sms" }

root@kitploit:~
Возвращает:```json
{
  "message_id": "msgid123456"
}

POST /invite

Приглашает нового пользователя по электронной почте. Для этой конечной точки требуется JWT service_role или supabase_admin, установленный в заголовке Auth Bearer:

например,```js headers: { "Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO" }

root@kitploit:~
INPUT is empty — no content was provided to translate. Please supply the Markdown chunk text.```json
{
  "email": "[email protected]"
}

Возвращает:```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" }

root@kitploit:~
### **POST /verify**

Проверка регистрации или восстановления пароля. Тип может быть `signup`, `recovery`, `invite`, `magiclink`, `email_change`, `sms` или `phone_change`,
а `token` — это токен, возвращаемый либо `/signup`, либо `/recover`.```json
{
  "type": "signup",
  "token": "confirmation-code-delivered-in-email"
}

password требуется для проверки при регистрации, если существующий пароль отсутствует.

Возвращает:```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" }

root@kitploit:~
Проверьте регистрацию по телефону или SMS-OTP. Тип должен быть установлен в `sms`.```json
{
  "type": "sms",
  "token": "confirmation-otp-delivered-in-sms",
  "redirect_to": "https://supabase.io",
  "phone": "phone-number-sms-otp-was-delivered-to"
}

Возвращает:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }

root@kitploit:~
### **GET /verify**

Проверка регистрации или восстановления пароля. Тип может быть `signup`, `recovery`, `magiclink`, `invite` или `email_change`.
А `token` — это токен, возвращаемый либо из `/signup`, либо из `/recover`, либо из `/magiclink`.

параметры запроса:```json
{
  "type": "signup",
  "token": "confirmation-code-delivered-in-email",
  "redirect_to": "https://supabase.io"
}

Пользователь будет авторизован и перенаправлен на:``` SITE_URL/#access_token=jwt-token-representing-the-user&token_type=bearer&expires_in=3600&refresh_token=a-refresh-token&type=invite

root@kitploit:~
Ваше приложение должно обнаруживать параметры запроса во фрагменте и использовать их для установки сессии (supabase-js делает это автоматически)

Вы можете использовать параметр `type`, чтобы перенаправить пользователя на форму установки пароля в случае `invite` или `recovery`,
показать сообщение о подтверждении аккаунта/приветственное сообщение в случае `signup` или направить его в дополнительный процесс онбординга

### **POST /otp**

Одноразовый пароль. Отправит пользователю magic-ссылку или SMS-OTP в зависимости от того, содержит ли тело запроса ключ "email" или "phone".

Если `"create_user": true`, пользователь не будет автоматически зарегистрирован, если он не существует.```js
{
  "phone": "12345678" // follows the E.164 format
  "create_user": true
}

ИЛИ```js // exactly the same as /magiclink { "email": "[email protected]" "create_user": true }

root@kitploit:~
Возвращает:```json
{}

POST /magiclink (рекомендуется использовать /otp вместо этого. См. выше.)

Magic Link. Отправит пользователю ссылку (например, /verify?type=magiclink&token=fgtyuf68ddqdaDd) на основе адреса электронной почты, по которой он может получить access_token.

По умолчанию Magic Links можно отправлять не чаще одного раза в 60 секунд.```json { "email": "[email protected]" }

root@kitploit:~
Возвращает:```json
{}

Когда пользователь переходит по магической ссылке, происходит перенаправление на <SITE_URL>#access_token=x&refresh_token=y&expires_in=z&token_type=bearer&type=magiclink (см. /verify выше)

POST /recover

Восстановление пароля. Отправит пользователю письмо для восстановления пароля на основе адреса электронной почты.

По умолчанию ссылки для восстановления можно отправлять только один раз в 60 секунд```json { "email": "[email protected]" }

root@kitploit:~
Возвращает:```json
{}

POST /token

Это эндпоинт OAuth2, который в настоящее время реализует типы предоставления password и refresh_token

параметры запроса:``` ?grant_type=password

root@kitploit:~
body:```js
// Email login
{
  "email": "[email protected]",
  "password": "somepassword"
}

// Phone login
{
  "phone": "12345678",
  "password": "somepassword"
}

или

параметры запроса:``` grant_type=refresh_token

root@kitploit:~
body:```json
{
  "refresh_token": "a-refresh-token"
}

После получения токена доступа вы можете получить доступ к методам, требующим аутентификации, установив заголовок Authorization: Bearer YOUR_ACCESS_TOKEN_HERE.

Возвращает:```json { "access_token": "jwt-token-representing-the-user", "token_type": "bearer", "expires_in": 3600, "refresh_token": "a-refresh-token" }

root@kitploit:~
### **GET /user**

Получить JSON-объект для авторизованного пользователя (требуется аутентификация)

Возвращает:```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"
}

PUT /user

Обновление пользователя (требуется аутентификация). Помимо изменения email/password, этот метод можно использовать для установки пользовательских данных. Изменение email приведёт к отправке magic link.```json { "email": "[email protected]", "password": "new-password", "phone": "+123456789", "data": { "key": "value", "number": 10, "admin": false } }

root@kitploit:~
Возвращает:```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"
}

Если GOTRUE_SECURITY_UPDATE_PASSWORD_REQUIRE_REAUTHENTICATION включён, пользователю необходимо будет сначала повторно пройти аутентификацию.```json { "password": "new-password", "nonce": "123456" }

root@kitploit:~
### **GET /reauthenticate**

Отправляет nonce на адрес электронной почты пользователя (предпочтительно) или на телефон. Этот endpoint требует, чтобы пользователь сначала выполнил вход / прошёл аутентификацию. Для успешной отправки nonce у пользователя должен быть указан адрес электронной почты или номер телефона.```js
headers: {
  "Authorization" : "Bearer eyJhbGciOiJI...M3A90LCkxxtX9oNP9KZO"
}

POST /logout

Выход пользователя (требуется аутентификация).

Это отзовёт все refresh-токены для пользователя. Помните, что JWT-токены будут оставаться действительными для stateless-аутентификации до истечения их срока действия.

GET /authorize

Получить access_token от внешнего OAuth-провайдера

параметры запроса:``` 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)>

root@kitploit:~
Перенаправляет на провайдера, а затем на `/callback`

Для специфической настройки Apple см.: <https://github.com/supabase/auth#apple-oauth>

### **GET /callback**

Внешний провайдер должен перенаправлять на эту конечную точку

Перенаправляет на `<GOTRUE_SITE_URL>#access_token=<access_token>&refresh_token=<refresh_token>&provider_token=<provider_oauth_token>&expires_in=3600&provider=<provider_name>`
Если были запрошены дополнительные scopes, то `provider_token` будет заполнен; вы можете использовать его для получения дополнительных данных от провайдера или взаимодействия с его сервисами.
Скачать инструмент
twitter
workos