Приложение
Электронная почта и пароль
Начиная с версии v3.0.1, была введена новая методика аутентификации. OSMI-AI-AI использует систему аутентификации на базе Passport.js с JWT-токенами, хранящимися в безопасных cookies с HTTP-only флагом. Когда пользователь входит в систему, его электронную почту и пароль проверяются по базе данных с помощью сравнения хэшей bcrypt. После успешной проверки генерируются два JWT-токена: короткосрочный — для доступа (по умолчанию на 60 минут) и долгосрочный — для обновления (по умолчанию на 90 дней). Эти токены сохраняются как безопасные cookies. Для последующих запросов система извлекает JWT из cookies, проверяет подпись и утверждения (claims) с помощью стратегии JWT Passport, а также убеждается, что сессия пользователя всё еще активна. Система также поддерживает автоматическое обновление токенов по истечении срока действия access-токена. Сессии хранятся либо в Redis, либо в базе данных, в зависимости от настроек.
Для существующих пользователей, которые использовали систему с именем пользователя и паролем (устаревшая методика), необходимо создать новую учетную запись администратора. Чтобы избежать несанкционированного получения прав владельца, потребуется сначала пройти аутентификацию с помощью текущего имени пользователя и пароля, настроенных как OSMI_AI_USERNAME и OSMI_AI_PASSWORD.
Следующие переменные окружения можно изменить:
URL приложения:
APP_URL- URL вашего развернутого приложения OSMI-AI-AI. По умолчанию:http://localhost:3000.
Конфигурация переменных окружения для JWT
Чтобы настроить параметры JWT-аутентификации, можно изменить следующие переменные:
JWT_AUTH_TOKEN_SECRET- секретный ключ для подписи access-токенов.JWT_REFRESH_TOKEN_SECRET- секретный ключ для refresh-токенов (по умолчанию используется значение JWT_AUTH_TOKEN_SECRET, если не задан).JWT_TOKEN_EXPIRY_IN_MINUTES- срок действия access-токена (по умолчанию 60 минут).JWT_REFRESH_TOKEN_EXPIRY_IN_MINUTES- срок действия refresh-токена (по умолчанию 129600 минут, или 90 дней).JWT_AUDIENCE- аудит (получатель) в утверждении токена (по умолчанию 'AUDIENCE').JWT_ISSUER- издатель токена (по умолчанию 'ISSUER').EXPRESS_SESSION_SECRET- секретный ключ для шифрования сессий (по умолчанию 'OSMI-AI-AI').EXPIRE_AUTH_TOKENS_ON_RESTART- установите 'true', чтобы аннулировать все токены при перезапуске сервера (полезно для разработки).
Конфигурация SMTP Email:
Настройте эти переменные для включения работы электронной почты, чтобы отправлять сбросы паролей и уведомления:
SMTP_HOST- хост вашего SMTP-сервера (например,smtp.gmail.com,smtp.host.com).SMTP_PORT- порт для SMTP-подключения (обычно587для TLS,465для SSL,25— без шифрования).SMTP_USER- имя пользователя для SMTP-аутентификации (обычно ваш email).SMTP_PASSWORD- пароль или пароль специально для приложений.SMTP_SECURE-true, чтобы использовать SSL/TLS;false— без шифрования.ALLOW_UNAUTHORIZED_CERTS-true, чтобы разрешить самоподписанные сертификаты (не рекомендуется для продакшена).SENDER_EMAIL- адрес электронной почты, который будет отображаться в исходящих письмах.
Безопасность и конфигурация токенов
Эти переменные управляют безопасностью аутентификации, сроком действия токенов и хэшированием паролей:
PASSWORD_RESET_TOKEN_EXPIRY_IN_MINS- время истечения для токенов сброса пароля (по умолчанию 15 минут).PASSWORD_SALT_HASH_ROUNDS- число раундов соль для bcrypt при хэшировании паролей (по умолчанию 10; выше — более безопасно, но медленнее).TOKEN_HASH_SECRET- секретный ключ для хэширования токенов и чувствительных данных (используйте сложную, случайную строку).
Лучшие практики безопасности
- Используйте надежные, уникальные значения для
TOKEN_HASH_SECRETи храните их в безопасности. - Для производственной среды установите
SMTP_SECURE=trueиALLOW_UNAUTHORIZED_CERTS=false. - Задайте соответствочные сроки истечения токенов в зависимости от ваших требований безопасности.
- Для повышения безопасности в производстве используйте более высокие значения
PASSWORD_SALT_HASH_ROUNDS(от 12 до 15).

