rtCloud поддерживает три подхода к единому входу (SSO):

ВариантЛучше подходит для
Встроенный KeycloakОрганизаций, желающих полностью автономный SSO-сервер в комплекте с rtCloud
Внешний провайдер OIDCОрганизаций, уже использующих поставщика идентификации (Auth0, Authentik, Okta, Supabase и т.д.)
Azure Active DirectoryОрганизаций, использующих Microsoft 365 или Azure AD

Без настроенного SSO пользователи входят с локальными учётными записями rtCloud, управляемыми через панель администратора.


Встроенный Keycloak

Развёртывание включает опциональный контейнер Keycloak, работающий рядом с rtCloud. Keycloak предварительно настроен с областью rtSurvey и готов к использованию.

Требования

  • Доменное имя с HTTPS (Keycloak требует HTTPS в производственной среде)
  • Не менее 4 ГБ RAM на сервере (Keycloak добавляет ~512 МБ к использованию памяти)

Настройка

1. Настройте переменные окружения в .env:

  # Включить встроенный контейнер Keycloak
EMBED_KEYCLOAK=true

# URL Keycloak — используйте ваш реальный домен
KEYCLOAK_URL=https://rtcloud.example.com/auth
KC_HOSTNAME=https://rtcloud.example.com/auth
KC_HOSTNAME_STRICT=false

# Настройки области и клиента (соответствуют импортированному realm JSON)
KEYCLOAK_REALM=rtsurvey
KEYCLOAK_CLIENT_ID=rtsurvey-app
KEYCLOAK_CLIENT_SECRET=your-client-secret-here

# Учётные данные администратора Keycloak
KEYCLOAK_ADMIN_USER=admin
KEYCLOAK_ADMIN_PASSWORD=change_me_keycloak_admin_password

# База данных Keycloak (создаётся автоматически)
KEYCLOAK_DB=keycloak
KEYCLOAK_DB_USER=keycloak
KEYCLOAK_DB_PASSWORD=change_me_keycloak_db_password

# Порт Keycloak (на стороне хоста, проксируется через Nginx)
KEYCLOAK_PORT=8091
  

2. Запустите с профилем встроенного Keycloak:

  docker compose -f docker-compose.production.yml --profile embed-keycloak up -d
  

3. Убедитесь, что Keycloak работает корректно:

  docker compose -f docker-compose.production.yml ps
  

Контейнер rtcloud-keycloak должен показать Up (healthy) через 2–3 минуты.

4. Откройте консоль администратора Keycloak:

  https://rtcloud.example.com/auth/admin
  

Войдите с KEYCLOAK_ADMIN_USER и KEYCLOAK_ADMIN_PASSWORD.

Что предварительно настроено

Встроенный Keycloak запускается с предварительно импортированной областью rtsurvey, включающей:

  • Конфигурацию клиента для веб-приложения
  • Стандартные роли пользователей (admin, project_manager, enumerator, analyst)
  • Настройки сессий и токенов, оптимизированные для rtSurvey

Вы можете добавлять пользователей напрямую в консоли администратора Keycloak или подключить Keycloak к вышестоящему поставщику идентификации (LDAP, SAML).

Маршрутизация Nginx

При использовании скриптов облачного развёртывания Nginx настроен для проксирования обоих сервисов:

ПутьБэкенд
/Приложение rtCloud на 127.0.0.1:8080
/auth/Keycloak на 127.0.0.1:8090

Внешний провайдер OIDC

Подключите rtCloud к любому OpenID Connect-совместимому поставщику идентификации. Этот подход не требует контейнера Keycloak.

Поддерживаемые провайдеры

Работает любой OIDC-совместимый провайдер, включая:

  • Authentik
  • Auth0
  • Okta
  • Keycloak (внешний экземпляр)
  • Supabase
  • Google (для организаций Google Workspace)
  • GitHub (через OAuth apps с расширением OIDC)

Настройка

1. Зарегистрируйте rtCloud как OIDC-клиент у вашего поставщика идентификации.

Вам понадобится:

  • Идентификатор клиента и секрет клиента
  • Зарегистрировать URI перенаправления: https://rtcloud.example.com/auth/callback
  • Для поддержки мобильного приложения также зарегистрируйте: vn.rta.rtsurvey.auth://callback

2. Настройте переменные окружения в .env:

  # URL обнаружения OIDC (зависит от провайдера — проверьте документацию IdP)
OIDC_ISSUER_URL=https://your-identity-provider.com

# Учётные данные клиента от вашего поставщика идентификации
OIDC_CLIENT_ID=rtcloud-app
OIDC_CLIENT_SECRET=your-client-secret-here

# Запрашиваемые области (openid, profile и email обычно достаточно)
OIDC_SCOPE=openid profile email

# URI перенаправления, зарегистрированный у вашего поставщика идентификации
OIDC_REDIRECT_URI=https://rtcloud.example.com/auth/callback

# Опционально: отдельный клиент для мобильного приложения
OIDC_MOBILE_CLIENT_ID=rtcloud-mobile
OIDC_MOBILE_REDIRECT_URI=vn.rta.rtsurvey.auth://callback

# Установите true для автоматического создания учётных записей rtCloud для новых пользователей OIDC
OPEN_REGISTRATION=false
  

3. Перезапустите контейнер приложения для применения изменений:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Автоматическое создание пользователей

При OPEN_REGISTRATION=true rtCloud автоматически создаёт локальную учётную запись при первом входе пользователя через OIDC. Учётная запись заполняется именем и email из ID-токена.

При OPEN_REGISTRATION=false (по умолчанию) администратор rtCloud должен сначала создать учётную запись пользователя, а идентификатор OIDC связывается при первом входе.

Пользовательские конечные точки

Если ваш провайдер не поддерживает обнаружение OIDC (.well-known/openid-configuration), вы можете задать конечные точки вручную:

  OIDC_AUTHORIZATION_ENDPOINT=https://your-provider.com/oauth2/authorize
OIDC_TOKEN_ENDPOINT=https://your-provider.com/oauth2/token
OIDC_USERINFO_ENDPOINT=https://your-provider.com/oauth2/userinfo
  

Azure Active Directory

Интеграция rtCloud с арендатором Microsoft Azure AD вашей организации.

Настройка

1. Зарегистрируйте новое приложение на Azure Portal:

  • Перейдите в Azure Active DirectoryApp registrationsNew registration
  • Имя: rtCloud
  • URI перенаправления: https://rtcloud.example.com/auth/callback (тип Web)
  • После создания запишите Application (client) ID и Directory (tenant) ID
  • В разделе Certificates & secrets создайте новый секрет клиента

2. Настройте переменные окружения в .env:

  AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
  

3. Перезапустите контейнер приложения:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Пользователи в арендаторе Azure AD теперь могут входить в rtCloud, используя свои учётные данные Microsoft.


Отключение SSO

Для возврата к локальной аутентификации удалите или закомментируйте все переменные, связанные с SSO, из .env, затем перезапустите контейнер приложения:

  docker compose -f docker-compose.production.yml up -d --force-recreate rtcloud
  

Если вы использовали встроенный Keycloak, остановите его, опустив флаг --profile embed-keycloak, выполнив docker compose down, а затем up -d без профиля.

Была ли эта страница полезной?