wt afd289fcd7
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Make (push) Successful in 9s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-CMake (push) Successful in 12s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Meson (push) Successful in 12s
Merge pull request 'added README.md and LICENSE' (#2) from develop into main
Reviewed-on: https://gitea.home.com:3000/TolaMironcenko/auth_service_c/pulls/2
2025-08-30 12:50:56 +07:00
2025-08-27 14:06:12 +07:00
2025-08-30 12:10:40 +07:00
2025-08-30 12:24:57 +07:00
2025-08-22 17:46:38 +07:00
2025-08-27 17:00:57 +07:00
2025-08-30 12:44:39 +07:00
2025-08-30 12:44:39 +07:00
2025-08-27 17:00:57 +07:00

Служба аутентификации на C

Этот репозиторий содержит реализацию службы аутентификации, написанной на языке C. Она предоставляет надежный набор API-интерфейсов для управления пользователями, аутентификации на основе токенов и авторизации, используя Mongoose в качестве веб-сервера и SQLite в качестве базы данных.

Особенности

  • Безопасная аутентификация: Получение и проверка токенов для безопасного доступа к ресурсам.
  • Управление пользователями: Полный набор функций CRUD (создание, чтение, обновление, удаление) для учетных записей пользователей, включая добавление, получение, изменение и удаление пользователей.
  • Регистрация пользователей: Удобный API для регистрации новых пользователей.
  • Сброс пароля: Возможность изменения паролей пользователей.
  • Поддержка TLS: Встроенная поддержка HTTPS для защищенной связи с использованием TLS-сертификатов.
  • Гибкая конфигурация: Легкая настройка службы через файл config.json.
  • Легковесная база данных: Использование SQLite для эффективного хранения данных.
  • Mongoose Web Server: Построен на высокопроизводительном и легковесном Mongoose Web Server.

Начало работы

Чтобы запустить службу аутентификации, выполните следующие шаги:

Зависимости

Убедитесь, что у вас установлены следующие зависимости:

  • gcc (или другой совместимый компилятор C)
  • make (для использования Makefile) или cmake и ninja (для использования CMake/Meson)
  • Библиотеки OpenSSL (для ssl и crypto)
  • Библиотека SQLite3
  • pthread (обычно поставляется с системами на базе Unix)

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

Вы можете собрать проект, используя CMake, Make или Meson.

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

mkdir build
cd build
cmake ..
make

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

make

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

meson setup builddir
meson compile -C builddir

Настройка

Служба может быть настроена через файл config.json. Пример файла config.json:

{
  "address": "0.0.0.0:8222",
  "tls_enabled": false,
  "tls_address": "0.0.0.0:8223",
  "tls_cert": "path/to/your/cert.pem",
  "tls_key": "path/to/your/key.pem",
  "default_users_file": "users.json"
}
  • address: Адрес и порт для прослушивания HTTP-соединений.
  • tls_enabled: Установите true, чтобы включить HTTPS.
  • tls_address: Адрес и порт для прослушивания HTTPS-соединений (если tls_enabled установлено в true).
  • tls_cert: Путь к файлу TLS-сертификата (если tls_enabled установлено в true).
  • tls_key: Путь к файлу TLS-ключа (если tls_enabled установлено в true).
  • default_users_file: Путь к файлу JSON, содержащему пользователей по умолчанию для загрузки при запуске.

Запуск службы

После сборки вы можете запустить службу из каталога сборки:

./auth_service

Тестирование

Проект включает набор тестов. Вы можете запустить их с помощью:

make test

или если вы используете Meson:

meson test -C builddir

API Эндпоинты

Вот доступные API-маршруты:

  • GET /#: Корневая страница.
  • OPTIONS /#: Установка заголовков CORS.
  • POST /api/token: Получение токена аутентификации.
    • Запрос: { "username": "your_username", "password": "your_password" }
    • Ответ: { "token": "your_jwt_token" }
  • POST /api/token/verify: Проверка действительности токена.
    • Запрос: { "token": "your_jwt_token" }
    • Ответ: { "valid": true/false }
  • POST /api/users: Получение списка всех пользователей. (Требуется аутентификация)
    • Запрос: {}
    • Ответ: [ { "id": "1", "username": "user1" }, ... ]
  • POST /api/users/user: Получение информации о конкретном пользователе. (Требуется аутентификация)
    • Запрос: { "username": "target_username" }
    • Ответ: { "id": "1", "username": "target_username", ... }
  • DELETE /api/users: Удаление пользователя. (Требуется аутентификация)
    • Запрос: { "id": "user_id_to_delete" }
    • Ответ: { "status": "success" }
  • POST /api/users/password: Изменение пароля пользователя. (Требуется аутентификация)
    • Запрос: { "id": "user_id", "old_password": "...", "new_password": "..." }
    • Ответ: { "status": "success" }
  • PUT /api/users: Обновление информации о пользователе. (Требуется аутентификация)
    • Запрос: { "id": "user_id", "field_to_update": "new_value" }
    • Ответ: { "status": "success" }
  • POST /api/users/add: Добавление нового пользователя. (Требуется аутентификация)
    • Запрос: { "username": "new_username", "password": "new_password" }
    • Ответ: { "id": "new_user_id", "username": "new_username" }
  • POST /api/register: Регистрация нового пользователя.
    • Запрос: { "username": "new_username", "password": "new_password" }
    • Ответ: { "id": "new_user_id", "username": "new_username" }

Лицензия

Этот проект распространяется под лицензией MIT License.

S
Description
No description provided
Readme MIT
491 KiB
Languages
C 85.6%
C++ 10.1%
Shell 1.8%
JavaScript 1.2%
HTML 0.7%
Other 0.5%