Osmi
Аутентификация

Приложение

Узнайте, как настроить контроль доступа на уровне приложения для ваших экземпляров OSMI-AI-AI

Электронная почта и пароль

Начиная с версии 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_CERTStrue, чтобы разрешить самоподписанные сертификаты (не рекомендуется для продакшена).
  • 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).