backdev_go - это пример RESTful HTTP API сервиса для аутентификации на стеке Go + JWT + PSQL.
Вся коммуникация сделана на POST запросах, где данные - это JSON в теле запросов. Данная демка не требует пароля, достаточно любого UUID пользователя, чтобы успешно авторизоваться.
Live Demo - https://backdev-go.ussur.xyz/
Работающую версию можно открыть здесь (и проверить работу эндпоинтов): https://backdev-go.ussur.xyz/ .
Данная версия поднята через docker-compose, как указано в следующем пункте
Контейнер с сервером опубликован на dockerhub. Запускается через простой файл docker-compose:
version: '3.8'
services:
backdev:
image: ussuratoncachi/backdev_go:0.2
container_name: backdev_go
ports:
- "9000:9000"
depends_on:
- postgres
environment:
- BACKDEV_SECRET=My Very Precious Secret Phrase
- BACKDEV_DB_TYPE=postgresql
- BACKDEV_LISTEN_IP=0.0.0.0:9000
- BACKDEV_PSQL_HOST=postgres
- BACKDEV_PSQL_PORT=5432
- BACKDEV_PSQL_USER=admin
- BACKDEV_PSQL_PASSWORD=admin
- BACKDEV_PSQL_DB_NAME=backdev_db
#- BACKDEV_SMTP_HOST=smtp.gmail.com
#- BACKDEV_SMTP_PORT=587
- BACKDEV_SMTP_USER=<Your SMTP Email>
- BACKDEV_SMTP_FROM_EMAIL=<Your SMTP Email>
- BACKDEV_SMTP_PASSWORD=<Your SMTP password>
restart: always
networks:
- app-network
postgres:
image: postgres:15
container_name: postgres
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: admin
POSTGRES_DB: backdev_db
volumes:
- ./postgres-data:/var/lib/postgresql/data
networks:
- app-network
networks:
app-network:
driver: bridge$ go build .
$ nano config.toml # Не забудтье настроить конфиг под себя!
$ ./backdev_go config.toml На главном руте (/) доступна HTML страница с интерфейсом для выполнения запросов на каждый эндпоинт.
Выдает новую пару JWT + Refresh токенов.
Принимает JSON: user_uuid, user_email.
Возвращает JSON: access_token, refresh_token.
Обновляет JWT токен. Работает только с тем Refresh токеном, который был выдан к этому Access токену. Работает только один раз. При попытке использования одной пары токенов несколько раз - выдаст ошибку.
При изменении IP адреса пользователя - он отправляет предупреждение на Email. Для предупреждения нужно настроить SMTP сервер в config.toml.
Принимает JSON: access_token, refresh_token, emulate_ip (опционально).
Возвращает JSON: access_token, refresh_token.
Проверяет корректность JWT токена.
Принимает JSON: access_token.
Возвращает - статус 200 если токен корректный, статус 4XX - если некорректный.