Merge pull request 'added README.md and LICENSE' (#2) from develop into main
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
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
Reviewed-on: https://gitea.home.com:3000/TolaMironcenko/auth_service_c/pulls/2
This commit was merged in pull request #2.
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 auth_service
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,134 @@
|
||||
# Служба аутентификации на 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
|
||||
|
||||
```bash
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
```
|
||||
|
||||
Использование Make
|
||||
|
||||
```bash
|
||||
make
|
||||
```
|
||||
|
||||
#### Использование Meson
|
||||
|
||||
```bash
|
||||
meson setup builddir
|
||||
meson compile -C builddir
|
||||
```
|
||||
|
||||
### Настройка
|
||||
|
||||
Служба может быть настроена через файл `config.json`. Пример файла `config.json`:
|
||||
|
||||
```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, содержащему пользователей по умолчанию для загрузки при запуске.
|
||||
|
||||
### Запуск службы
|
||||
|
||||
После сборки вы можете запустить службу из каталога сборки:
|
||||
|
||||
```bash
|
||||
./auth_service
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
|
||||
Проект включает набор тестов. Вы можете запустить их с помощью:
|
||||
|
||||
```bash
|
||||
make test
|
||||
```
|
||||
или если вы используете Meson:
|
||||
```bash
|
||||
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](LICENSE).
|
||||
Reference in New Issue
Block a user