Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Чтобы ограничить создание комнат Jitsi Meet определенными пользователями, требуйте аутентификации организаторов и выдавайте учетные данные только утвержденным учетным записям. Для новых самостоятельных установок Jitsi теперь рекомендует аутентификацию на основе токенов; в этом руководстве в качестве поставщика идентификации используется Keycloak, а приглашенные гости могут присоединиться к комнатам только после того, как утвержденный организатор начнет их создание.

1. Проверьте развертывание и выберите учетные записи хоста.

Эти инструкции предназначены для самостоятельной установки Jitsi Meet из пакетов Debian или Ubuntu с административным доступом к Prosody, Nginx и веб-конфигурации Jitsi. Предполагается, что Keycloak уже установлен или может быть безопасно развернут. Prosody — это сервер обмена сообщениями XMPP; JSON Web Token (JWT) — это подписанные учетные данные, используемые для подтверждения аутентификации пользователя. Keycloak — это поставщик идентификационных данных, который обрабатывает вход пользователей в систему.

В руководстве Jitsi устаревший способ аутентификации с использованием имени пользователя и пароля в защищенном домене помечен как устаревший, и для новых установок используется аутентификация с помощью токенов. Текущие инструкции по аутентификации были обновлены 5 октября 2026 года. Если вы уже используете Docker, не копируйте указанные ниже пути к пакетам: в официальном руководстве по настройке Docker используются переменные среды, такие как ENABLE_AUTH, ENABLE_GUESTS, и AUTH_TYPE.

Перед редактированием запишите имя хоста вашей публичной встречи, убедитесь, что HTTPS работает, сделайте резервную копию файлов конфигурации, которые вы планируете изменить, и определите, какие учетные записи могут проводить встречи. В этом примере адрес встречи — jitsi.example.com; замените его везде на адрес вашего фактического хоста.

2. Предоставляйте доступ в Keycloak только авторизованным хостам.

Создайте выделенный мир

В консоли администратора Keycloak создайте и выберите область с именем jitsi-realm. Область представляет собой изолированную коллекцию пользователей и настроек приложения. Отключите открытую регистрацию пользователей и избегайте автоматического импорта неограниченного корпоративного каталога: при такой конфигурации любая учетная запись, способная пройти аутентификацию в принятой области, может стать создателем собраний.

В Keycloak создайте домен с именем jitsi-realm.
Создайте отдельный домен, чтобы контролировать список создателей встреч Jitsi.

Зарегистрируйте веб-клиент Jitsi

Создайте клиент OpenID Connect с именем jitsi. OpenID Connect (OIDC) — это протокол авторизации, который Keycloak использует для возврата информации об идентификации в Jitsi. Следуя официальному примеру Jitsi, введите следующие значения обратного вызова, скорректировав имя хоста:

  • Действительный URI перенаправления:https://jitsi.example.com/static/sso.html
  • Допустимый URI перенаправления после выхода из системы:https://jitsi.example.com/static/logout.html
  • Источник веб-сайта:https://jitsi.example.com
Поля при создании клиента Keycloak, идентифицирующие клиент Jitsi OpenID Connect.
Клиент Jitsi зарегистрирован в Keycloak как приложение OpenID Connect.
В настройках клиента Keycloak отображается URL-адрес перенаправления для единого входа Jitsi.
URI перенаправления отправляет авторизованный хост обратно в Jitsi после аутентификации.

Добавить разрешенных лиц

В разделе «Пользователи» создайте учетную запись для каждого авторизованного хоста, а затем установите пароль для этой учетной записи в разделе «Учетные данные». Используйте отдельные учетные записи, а не один общий логин администратора. Учетная запись, которая больше не должна создавать собрания, должна быть отключена или иным образом лишена аутентификации в этом домене. Если вам нужны ограничения только для одной группы в общем домене, добавьте отдельно проверяемую политику авторизации; описанные здесь шаги не обеспечивают автоматическое соблюдение членства в группах Keycloak.

Список пользователей Keycloak с индивидуально одобренными учетными записями хостов.
Список подходящих хостов Jitsi должен быть ограничен индивидуально управляемыми учетными записями.
Область учетных данных пользователя Keycloak с функцией установки пароля.
Перед проверкой входа в систему задайте отдельные учетные данные для каждого одобренного хоста.

3. Подключите Keycloak к серверу Jitsi.

Проксирование конечных точек домена Keycloak через HTTPS

Настройте Keycloak, указав правильное публичное имя хоста и заголовки доверенного обратного прокси, затем перенаправляйте /realms/запросы с вашего хоста Jitsi на его частный слушатель Keycloak. Для экземпляра Keycloak, доступного по адресу 127.0.0.1:18080, добавьте следующий блок location в существующий блок HTTPS-сервера Jitsi Nginx перед общими маршрутами Jitsi:

location ~ ^/realms/(.*) {
    proxy_pass http://127.0.0.1:18080;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Предполагается, что Keycloak доступен локально на этом порту; замените вышестоящий порт для вашей конфигурации. Не открывайте без необходимости доступ к административной консоли Keycloak или бэкэнд-порту. Для получения информации о настройках прокси-сервера и имени хоста в производственной среде ознакомьтесь с документацией Keycloak по обратному прокси .

Текстовый редактор с блоком адресации Nginx, перенаправляющим запросы к домену Realm в Keycloak.
В редакторе Nginx отображается раздел realm-proxy; остальные маршруты Jitsi оставьте без изменений.

В Prosody требуются токены.

Отредактируйте /etc/prosody/conf.avail/jitsi.example.com.cfg.lua. Добавьте настройки издателя и аудитории, затем обновите существующий основной блок VirtualHost, чтобы использовать аутентификацию по токену. Объедините эти строки с другими настройками — не создавайте вторую копию этого блока хоста:

asap_accepted_issuers = { "https://jitsi.example.com/realms/jitsi-realm" }
asap_accepted_audiences = { "account" }
asap_require_room_claim = false

VirtualHost "jitsi.example.com"
    authentication = "token"
    app_id = "jitsi"
    allow_empty_token = false
    cache_keys_url = "https://jitsi.example.com/realms/jitsi-realm/protocol/openid-connect/certs"

Для гостевого доступа добавьте отдельный guest.jitsi.example.comвиртуальный хост с authentication = "jitsi-anonymous", c2s_require_encryption = false, и smacksмодулем, как показано в инструкциях Jitsi. Это внутренний домен XMPP: не создавайте для него публичный DNS или отдельный сертификат. В существующий список модулей основного хоста добавьте persistent_lobby; в существующий conference.jitsi.example.comсписок модулей компонента MUC добавьте muc_wait_for_host. MUC — это компонент многопользовательского чата, который управляет конференц-залами. Сохраните уже перечисленные модули.

Настройте процесс входа в систему через браузер.

В файле /etc/jitsi/meet/jitsi.example.com-config.jsдобавьте anonymousdomain: 'guest.jitsi.example.com'к существующему hostsобъекту следующие данные: Добавьте настройки OIDC, описанные в документации Jitsi:

config.tokenAuthUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/auth?client_id=jitsi&response_type=code&scope=openid&state={state}&redirect_uri=https://'+ config.hosts.domain + '/static/sso.html&code_challenge={code_challenge}&code_challenge_method=S256';
config.tokenLogoutUrl='https://'+ config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect/logout?post_logout_redirect_uri=https://'+ config.hosts.domain + '/static/logout.html';
config.tokenAuthInline=true;
config.sso={ ssoService: config.hosts.domain, tokenService: config.hosts.domain + '/realms/jitsi-realm/protocol/openid-connect', clientId: "jitsi" };

Эти значения реализуют процесс авторизации с использованием кода авторизации и PKCE (Proof Key for Code Exchange), защиты для авторизации через браузер. В руководстве Jitsi специально указано, что jicofo.confаутентификацию следует отключить для режима токена; не следует копировать устаревший блок аутентификации XMPP Secure Domain.

Форма входа в Jitsi Meet с полями для имени пользователя, пароля и кнопкой «Войти».
Форма входа пользователя представляет собой проверку учетных данных перед тем, как утвержденный организатор создаст комнату.

Проверьте и перезагрузите службы.

Проверьте синтаксис Nginx, затем перезапустите только те службы, которые указаны в текущих инструкциях по аутентификации с помощью токенов. Если ваш сервер Jitsi уже используется, выполните эти изменения в период технического обслуживания:

sudo nginx -t
sudo systemctl restart prosody
sudo systemctl restart nginx

4. Избегайте этих ошибок при получении разрешений и входе в систему.

  • Создать комнату по-прежнему может каждый: убедитесь, что основной хост Prosody аутентифицирован с помощью токена, пустые токены не допускаются, а гостевой хост является отдельным. Протестируйте в чистой сессии браузера, а не в той, в которой все еще активен действительный логин.
  • Утвержденные пользователи не могут войти в систему: сравните эмитент домена Keycloak, публичное имя хоста HTTPS, идентификатор клиента, URI перенаправления и Prosody cache_keys_url. Неудачное перенаправление в браузере не является доказательством правильности прав доступа пользователя.
  • Гости никогда не заходят в комнату: проверьте анонимный домен в Prosody и Jitsi config.js, а также модули ожидания хоста. Состояние лобби или ожидания гостя отличается от ошибки аутентификации.

5. Проверьте, кто может создавать новые собрания.

Откройте URL-адрес ранее не использовавшейся комнаты в приватном окне браузера, не входя в систему. Гость не должен иметь возможности начать конференцию в качестве первого организатора. Затем войдите в систему как авторизованный пользователь Keycloak и создайте эту комнату; приглашенный гость должен иметь возможность присоединиться, если вы включили гостевой домен. Наконец, попробуйте использовать отключенную или неодобренную учетную запись и убедитесь, что она не может пройти аутентификацию и создать новую комнату.

В окне создания встречи Jitsi Meet отображается название комнаты team-sync и кнопка «Создать встречу».
После прохождения проверки при входе в систему авторизованный организатор вводит название комнаты, чтобы начать совещание.

Если какой-либо тест не пройден, проверьте его sudo journalctl -u prosody -u nginx --since "10 minutes ago"вместе с событиями аутентификации Keycloak, не публикуя токены или пароли из журналов. Исправление считается подтвержденным только тогда, когда авторизованная учетная запись может создать новую комнату, а неаутентифицированный пользователь — нет.

Оставить комментарий

Диагностика сбоев входа в SLES PAM без блокировки доступа.

Диагностика сбоев входа в SLES PAM без блокировки доступа.

Выявите причину сбоя PAM, указав службу, политику учетной записи или поставщика идентификации, а затем восстановите правильную конфигурацию SLES, сохранив при этом работоспособную сессию администратора.

Безопасная пересылка Syslog-сообщений SLES с использованием rsyslog и взаимного TLS.

Безопасная пересылка Syslog-сообщений SLES с использованием rsyslog и взаимного TLS.

Отправляйте системные журналы SLES на удаленный сборщик rsyslog по аутентифицированному TLS, с проверкой сертификатов, буферизацией сбоев и тестированием доставки.

Автоматизируйте согласованное резервное копирование Nextcloud с помощью Restic и Cron.

Автоматизируйте согласованное резервное копирование Nextcloud с помощью Restic и Cron.

Создавайте резервные копии файлов Nextcloud и MariaDB одновременно, планируйте создание зашифрованных снимков Restic с помощью cron и проверяйте восстановление, не рискуя работающим сервером.

Создание резервной копии и восстановление почтового ящика Zimbra CE с помощью экспорта TGZ.

Создание резервной копии и восстановление почтового ящика Zimbra CE с помощью экспорта TGZ.

Экспортируйте отдельный почтовый ящик Zimbra Community Edition, проверьте его резервную копию TGZ и восстановите отсутствующие элементы без перезаписи существующих писем.

Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.

Разрешите создавать комнаты Jitsi Meet только авторизованным пользователям, используя аутентификацию Keycloak и токены, при этом сохранив возможность присоединения гостей при необходимости.

Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux

Добавление шрифтов в ONLYOFFICE Document Server: Docker против Linux

Установите пользовательские шрифты в ONLYOFFICE Document Server, сравните постоянные Docker-контейнеры с прямыми копиями, перестройте список шрифтов и проверьте результат.

Синхронизация пользователей Active Directory с ONLYOFFICE DocSpace через LDAP

Синхронизация пользователей Active Directory с ONLYOFFICE DocSpace через LDAP

Подключите ONLYOFFICE DocSpace к Active Directory или OpenLDAP, безопасно импортируйте пользователей и группы, сопоставляйте поля учетных записей и планируйте надежную синхронизацию.

Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.

Разместите документы ONLYOFFICE за HAProxy, не нарушая режим редактирования.

Настройте HTTPS-протокол HAProxy, заголовки переадресации, тайм-ауты WebSocket и проверки работоспособности для документов ONLYOFFICE, а затем проверьте редактирование и сохранение.

Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Установка и подписание пользовательских модулей ядра в режиме безопасной загрузки SLES 15.

Загрузите пользовательский модуль ядра SLES 15, не отключая Secure Boot. Сопоставьте его с работающим ядром, подпишите файл .ko, зарегистрируйте ключ MOK и проверьте загрузку.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Загрузка Ubuntu Server в аварийный режим: пошаговое руководство по восстановлению.

Безопасная диагностика аварийного режима Ubuntu Server. Чтение журналов загрузки, проверка монтирования корневого каталога и файла fstab, восстановление неисправного модуля, обработка ошибок файловой системы и проверка чистой перезагрузки.