wt 7d234a30d0
Build and push Docker Image / Build-and-Docker-Image (push) Successful in 36s
Update README.md
2025-07-16 15:05:06 +07:00
2025-06-07 03:39:08 +07:00
2025-05-29 01:11:04 +07:00
2025-06-07 03:29:41 +07:00
2025-07-16 14:57:35 +07:00
2025-07-16 14:57:35 +07:00
2025-05-27 22:15:15 +07:00
2025-06-07 03:35:01 +07:00
2025-06-07 03:29:41 +07:00
2025-07-16 15:05:06 +07:00
2025-07-16 14:57:35 +07:00
2025-07-16 15:05:06 +07:00
2025-05-27 18:20:05 +07:00

Auth Service Go

Микросервис аутентификации и авторизации, написанный на Go. Предоставляет REST API для управления пользователями, аутентификации через JWT токены и контроля доступа.

Возможности

  • 🔐 JWT токены для аутентификации
  • 👥 Управление пользователями (создание, обновление, удаление)
  • 🗄️ SQLite база данных с GORM
  • 🔒 Поддержка TLS/SSL
  • 📝 Регистрация пользователей (опционально)
  • ⚙️ Гибкая конфигурация через переменные окружения
  • 🐳 Docker поддержка

Требования

  • Go 1.24.3 или новее
  • SQLite3

Установка

Из исходного кода

git clone <repository-url>
cd auth_service_go
go mod download
go build

Docker

docker build -t auth_service .
docker run -p 8090:8090 auth_service

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

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

# Файлы базы данных
USERS_FILE=users.json
USERS_DB=users.db

# Настройки регистрации
ENABLE_SELF_REGISTER=false

# TLS настройки
ENABLE_TLS=false
CERT_FILE=/data/file.crt
KEY_FILE=/data/file.key

# Настройки сервера
SERVER_ADDRESS=0.0.0.0
SERVER_PORT=8090

Параметры конфигурации

Параметр Описание Значение по умолчанию
USERS_FILE Путь к JSON файлу с пользователями users.json
USERS_DB Путь к SQLite базе данных users.db
ENABLE_SELF_REGISTER Разрешить самостоятельную регистрацию false
ENABLE_TLS Включить TLS/SSL false
CERT_FILE Путь к SSL сертификату -
KEY_FILE Путь к SSL ключу -
SERVER_ADDRESS IP адрес сервера 0.0.0.0
SERVER_PORT Порт сервера 8090

API Документация

Аутентификация

POST /api/token

Аутентификация пользователя по логину и паролю.

Запрос:

{
  "username": "user",
  "password": "password"
}

Ответ:

{
  "token": "jwt_token_here",
  "expires_at": "2024-01-01T00:00:00Z"
}

POST /api/token/verify

Проверка валидности JWT токена.

Запрос:

{
  "token": "jwt_token_here"
}

Ответ:

{
  "valid": true,
  "user_id": "user_id_here"
}

POST /api/access

Запрос доступа с использованием токена.

Заголовки:

Authorization: Bearer jwt_token_here

Управление пользователями

POST /api/register

Регистрация нового пользователя.

Запрос:

{
  "username": "newuser",
  "password": "password",
  "email": "user@example.com"
}

GET /api/users

Получение списка всех пользователей.

Заголовки:

Authorization: Bearer jwt_token_here

GET /api/users/user

Получение информации о текущем пользователе.

Заголовки:

Authorization: Bearer jwt_token_here

PUT /api/users/password

Изменение пароля пользователя.

Запрос:

{
  "old_password": "old_password",
  "new_password": "new_password"
}

PUT /api/users/change

Изменение данных пользователя.

Запрос:

{
  "email": "new_email@example.com",
  "first_name": "John",
  "last_name": "Doe"
}

POST /api/users/add

Добавление нового пользователя (администратор).

Запрос:

{
  "username": "newuser",
  "password": "password",
  "email": "user@example.com",
  "role": "user"
}

DELETE /api/users/del

Удаление пользователя.

Запрос:

{
  "user_id": "user_id_here"
}

Примеры использования

Получение токена

curl -X POST http://localhost:8090/api/token \
  -H "Content-Type: application/json" \
  -d '{"username": "admin", "password": "password"}'

Использование токена

curl -X GET http://localhost:8090/api/users \
  -H "Authorization: Bearer your_jwt_token_here"

Регистрация пользователя

curl -X POST http://localhost:8090/api/register \
  -H "Content-Type: application/json" \
  -d '{"username": "newuser", "password": "password", "email": "user@example.com"}'

Разработка

Структура проекта

auth_service_go/
├── api/          # API обработчики
├── database/     # Работа с базой данных
├── model/        # Модели данных
├── server/       # Настройка сервера
├── utils/        # Утилиты
├── main.go       # Входная точка
├── go.mod        # Зависимости Go
└── README.md     # Документация

Запуск для разработки

# Установка зависимостей
go mod tidy

# Запуск с горячей перезагрузкой (требует air)
air

# Обычный запуск
go run main.go

Сборка

# Сборка для текущей платформы
go build

# Сборка для Linux
GOOS=linux GOARCH=amd64 go build

# Сборка для Windows
GOOS=windows GOARCH=amd64 go build

Безопасность

  • Используйте HTTPS в продакшене
  • Регулярно обновляйте зависимости
  • Используйте сильные пароли
  • Настройте правильные разрешения для файлов базы данных
  • Не храните секреты в коде

Лицензия

Этот проект лицензируется под MIT лицензией. Смотрите файл LICENSE для подробностей.

Поддержка

При возникновении проблем создайте issue в репозитории проекта.

S
Description
No description provided
Readme MIT
76 KiB
First release
Latest
2025-07-07 18:22:30 +07:00
Languages
Go 97.3%
Dockerfile 2.7%