feat: Добавлена новая система авторизации с JWT токенами
- Удален Basic Auth, заменен на современную JWT авторизацию - Добавлена страница входа с красивым интерфейсом - Обновлен фронтенд для работы с JWT токенами - Добавлены новые зависимости: PyJWT, passlib[bcrypt], jinja2 - Создан тестовый скрипт для проверки авторизации - Добавлено руководство по миграции - Обновлена документация и README - Улучшен дизайн поля ввода пароля на странице входа Автор: Сергей Антропов Сайт: https://devops.org.ru
This commit is contained in:
151
MIGRATION_GUIDE.md
Normal file
151
MIGRATION_GUIDE.md
Normal 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 токены больше не будут работать. Все пользователи должны будут войти заново через новую систему авторизации.
|
||||
Reference in New Issue
Block a user