- Удален Basic Auth, заменен на современную JWT авторизацию - Добавлена страница входа с красивым интерфейсом - Обновлен фронтенд для работы с JWT токенами - Добавлены новые зависимости: PyJWT, passlib[bcrypt], jinja2 - Создан тестовый скрипт для проверки авторизации - Добавлено руководство по миграции - Обновлена документация и README - Улучшен дизайн поля ввода пароля на странице входа Автор: Сергей Антропов Сайт: https://devops.org.ru
152 lines
6.0 KiB
Markdown
152 lines
6.0 KiB
Markdown
# Руководство по миграции с 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 токены больше не будут работать. Все пользователи должны будут войти заново через новую систему авторизации.
|