Главная
» Как сделать
»
Разрешите авторизованным пользователям создавать комнаты Jitsi с помощью входа через Keycloak.
Разрешите авторизованным пользователям создавать комнаты 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. Область представляет собой изолированную коллекцию пользователей и настроек приложения. Отключите открытую регистрацию пользователей и избегайте автоматического импорта неограниченного корпоративного каталога: при такой конфигурации любая учетная запись, способная пройти аутентификацию в принятой области, может стать создателем собраний.
Создайте отдельный домен, чтобы контролировать список создателей встреч 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
Клиент Jitsi зарегистрирован в Keycloak как приложение OpenID Connect.URI перенаправления отправляет авторизованный хост обратно в Jitsi после аутентификации.
Добавить разрешенных лиц
В разделе «Пользователи» создайте учетную запись для каждого авторизованного хоста, а затем установите пароль для этой учетной записи в разделе «Учетные данные». Используйте отдельные учетные записи, а не один общий логин администратора. Учетная запись, которая больше не должна создавать собрания, должна быть отключена или иным образом лишена аутентификации в этом домене. Если вам нужны ограничения только для одной группы в общем домене, добавьте отдельно проверяемую политику авторизации; описанные здесь шаги не обеспечивают автоматическое соблюдение членства в группах Keycloak.
Список подходящих хостов Jitsi должен быть ограничен индивидуально управляемыми учетными записями.Перед проверкой входа в систему задайте отдельные учетные данные для каждого одобренного хоста.
3. Подключите Keycloak к серверу Jitsi.
Проксирование конечных точек домена Keycloak через HTTPS
Настройте Keycloak, указав правильное публичное имя хоста и заголовки доверенного обратного прокси, затем перенаправляйте /realms/запросы с вашего хоста Jitsi на его частный слушатель Keycloak. Для экземпляра Keycloak, доступного по адресу 127.0.0.1:18080, добавьте следующий блок location в существующий блок HTTPS-сервера Jitsi Nginx перед общими маршрутами Jitsi:
Предполагается, что Keycloak доступен локально на этом порту; замените вышестоящий порт для вашей конфигурации. Не открывайте без необходимости доступ к административной консоли Keycloak или бэкэнд-порту. Для получения информации о настройках прокси-сервера и имени хоста в производственной среде ознакомьтесь с документацией Keycloak по обратному прокси .
В редакторе Nginx отображается раздел realm-proxy; остальные маршруты Jitsi оставьте без изменений.
В Prosody требуются токены.
Отредактируйте /etc/prosody/conf.avail/jitsi.example.com.cfg.lua. Добавьте настройки издателя и аудитории, затем обновите существующий основной блок VirtualHost, чтобы использовать аутентификацию по токену. Объедините эти строки с другими настройками — не создавайте вторую копию этого блока хоста:
Для гостевого доступа добавьте отдельный 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:
Эти значения реализуют процесс авторизации с использованием кода авторизации и PKCE (Proof Key for Code Exchange), защиты для авторизации через браузер. В руководстве Jitsi специально указано, что jicofo.confаутентификацию следует отключить для режима токена; не следует копировать устаревший блок аутентификации XMPP Secure Domain.
Форма входа пользователя представляет собой проверку учетных данных перед тем, как утвержденный организатор создаст комнату.
Проверьте и перезагрузите службы.
Проверьте синтаксис Nginx, затем перезапустите только те службы, которые указаны в текущих инструкциях по аутентификации с помощью токенов. Если ваш сервер Jitsi уже используется, выполните эти изменения в период технического обслуживания:
4. Избегайте этих ошибок при получении разрешений и входе в систему.
Создать комнату по-прежнему может каждый: убедитесь, что основной хост Prosody аутентифицирован с помощью токена, пустые токены не допускаются, а гостевой хост является отдельным. Протестируйте в чистой сессии браузера, а не в той, в которой все еще активен действительный логин.
Утвержденные пользователи не могут войти в систему: сравните эмитент домена Keycloak, публичное имя хоста HTTPS, идентификатор клиента, URI перенаправления и Prosody cache_keys_url. Неудачное перенаправление в браузере не является доказательством правильности прав доступа пользователя.
Гости никогда не заходят в комнату: проверьте анонимный домен в Prosody и Jitsi config.js, а также модули ожидания хоста. Состояние лобби или ожидания гостя отличается от ошибки аутентификации.
5. Проверьте, кто может создавать новые собрания.
Откройте URL-адрес ранее не использовавшейся комнаты в приватном окне браузера, не входя в систему. Гость не должен иметь возможности начать конференцию в качестве первого организатора. Затем войдите в систему как авторизованный пользователь Keycloak и создайте эту комнату; приглашенный гость должен иметь возможность присоединиться, если вы включили гостевой домен. Наконец, попробуйте использовать отключенную или неодобренную учетную запись и убедитесь, что она не может пройти аутентификацию и создать новую комнату.
После прохождения проверки при входе в систему авторизованный организатор вводит название комнаты, чтобы начать совещание.
Если какой-либо тест не пройден, проверьте его sudo journalctl -u prosody -u nginx --since "10 minutes ago"вместе с событиями аутентификации Keycloak, не публикуя токены или пароли из журналов. Исправление считается подтвержденным только тогда, когда авторизованная учетная запись может создать новую комнату, а неаутентифицированный пользователь — нет.