feat: Добавлена новая система авторизации с JWT токенами

- Удален Basic Auth, заменен на современную JWT авторизацию
- Добавлена страница входа с красивым интерфейсом
- Обновлен фронтенд для работы с JWT токенами
- Добавлены новые зависимости: PyJWT, passlib[bcrypt], jinja2
- Создан тестовый скрипт для проверки авторизации
- Добавлено руководство по миграции
- Обновлена документация и README
- Улучшен дизайн поля ввода пароля на странице входа

Автор: Сергей Антропов
Сайт: https://devops.org.ru
This commit is contained in:
Сергей Антропов
2025-08-17 18:29:06 +03:00
parent 3126ff4eb6
commit a979dd2838
10 changed files with 1238 additions and 98 deletions

151
MIGRATION_GUIDE.md Normal file
View File

@@ -0,0 +1,151 @@
# Руководство по миграции с Basic Auth на JWT
## 🔄 Миграция с Basic Auth на JWT авторизацию
Это руководство поможет вам перейти с устаревшей системы Basic Auth на современную систему авторизации на основе JWT токенов.
## 📋 Что изменилось
### ✅ Новые возможности:
- **JWT токены** вместо Basic Auth
- **Страница входа** с современным интерфейсом
- **Безопасные сессии** с автоматическим истечением
- **Защищенные API** эндпоинты
- **Автоматическое перенаправление** на страницу входа
### 🔧 Технические изменения:
- Обновлен `app.py` с новой системой авторизации
- Добавлена страница входа `templates/login.html`
- Обновлен фронтенд для работы с JWT токенами
- Добавлены новые зависимости в `requirements.txt`
- Обновлены переменные окружения
## 🚀 Быстрая миграция
### 1. Обновление зависимостей
```bash
# Остановите текущий сервис
make down
# Обновите зависимости
pip install -r requirements.txt
# или для Docker
docker compose build --no-cache
```
### 2. Обновление переменных окружения
```bash
# Обновите .env файл
LOGBOARD_USER=admin # Ваше имя пользователя
LOGBOARD_PASS=admin123 # Ваш пароль
SECRET_KEY=your-secret-key # Уникальный секретный ключ
AUTH_METHOD=jwt # Изменено с basic на jwt
SESSION_TIMEOUT=3600 # Время жизни сессии в секундах
```
### 3. Запуск обновленного сервиса
```bash
# Запустите обновленный сервис
make up
# Проверьте работу
make test-auth
```
## 🔐 Настройка безопасности
### Рекомендуемые настройки для продакшена:
```bash
# Генерируйте уникальные ключи
SECRET_KEY=$(openssl rand -hex 32)
ENCRYPTION_KEY=$(openssl rand -hex 32)
# Используйте сложные пароли
LOGBOARD_PASS=YourComplexPassword123!
# Настройте время жизни сессии
SESSION_TIMEOUT=3600 # 1 час
```
### Переменные окружения:
| Переменная | Описание | Значение по умолчанию |
|------------|----------|----------------------|
| `LOGBOARD_USER` | Имя пользователя | `admin` |
| `LOGBOARD_PASS` | Пароль | `admin123` |
| `SECRET_KEY` | Секретный ключ для JWT | `your-secret-key-here` |
| `AUTH_METHOD` | Метод авторизации | `jwt` |
| `SESSION_TIMEOUT` | Время жизни сессии (сек) | `3600` |
## 🧪 Тестирование
### Автоматическое тестирование:
```bash
# Запустите тесты авторизации
make test-auth
```
### Ручное тестирование:
1. Откройте браузер: `http://localhost:9001`
2. Должны быть перенаправлены на страницу входа
3. Введите логин и пароль
4. Проверьте доступ к панели управления
## 🔄 API изменения
### Новые эндпоинты:
- `POST /api/auth/login` - вход в систему
- `POST /api/auth/logout` - выход из системы
- `GET /api/auth/me` - информация о текущем пользователе
### Изменения в существующих эндпоинтах:
Все API эндпоинты теперь требуют JWT токен в заголовке:
```
Authorization: Bearer <your-jwt-token>
```
### WebSocket изменения:
WebSocket соединения теперь используют JWT токены вместо base64 токенов.
## 🐛 Устранение неполадок
### Проблема: "Unauthorized" ошибки
**Решение:** Проверьте правильность логина и пароля в `.env` файле
### Проблема: Токен истекает слишком быстро
**Решение:** Увеличьте `SESSION_TIMEOUT` в настройках
### Проблема: Не работает WebSocket
**Решение:** Убедитесь, что JWT токен передается в URL параметре `token`
### Проблема: Страница входа не загружается
**Решение:** Проверьте, что `templates/login.html` существует и доступен
## 📝 Логи изменений
### Версия 2.0.0:
- ✅ Удален Basic Auth
- ✅ Добавлена JWT авторизация
- ✅ Создана страница входа
- ✅ Обновлен фронтенд
- ✅ Добавлены тесты авторизации
- ✅ Обновлена документация
## 🆘 Поддержка
Если у вас возникли проблемы с миграцией:
1. Проверьте логи: `make logs`
2. Запустите тесты: `make test-auth`
3. Проверьте настройки в `.env` файле
4. Убедитесь, что все зависимости установлены
## 📞 Контакты
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
---
**Примечание:** После миграции старые Basic Auth токены больше не будут работать. Все пользователи должны будут войти заново через новую систему авторизации.