Как настроить единый вход (SSO) с помощью Keycloak в Element Web

Element Web не использует прямую аутентификацию через Keycloak. Element запрашивает у своего домашнего сервера Matrix информацию о поддерживаемых методах входа в систему; домашний сервер завершает соединение OpenID Connect (OIDC) с Keycloak и возвращает пользователя в Element. Для развертывания в Synapse с использованием встроенной поддержки OIDC настройте конфиденциальный OIDC-клиент в Keycloak, добавьте этот поставщик в Synapse и, при необходимости, настройте Element Web config.jsonдля отображения или автоматического запуска единого входа (SSO).

В этом руководстве используется встроенный в Synapse OIDC-провайдер, что является распространенным вариантом развертывания. Если ваш домашний сервер делегирует аутентификацию службе аутентификации Matrix Authentication Service (MAS), используйте вместо этого описанную ниже конфигурацию обратного вызова и провайдера MAS. Два URL-адреса обратного вызова различаются. Инструкции были проверены на соответствие документации по веб-конфигурации Element, руководству по OIDC для Synapse версии 1.144, текущему руководству по SSO от MAS и руководству администратора Keycloak 26.8.0 6 октября 2026 года; пакеты развертывания и метки пользовательского интерфейса могут различаться в зависимости от версии.

Во-первых, определите, какой путь аутентификации вы используете.

РазвертываниеГде настроен KeycloakURL обратного вызова Keycloak
Встроенный OIDC SynapseСинапсoidc_providershttps://matrix.example.com/_synapse/client/oidc/callback
Synapse делегирует аутентификацию MAS.МАСupstream_oauth2.providershttps://auth.example.com/upstream/callback/<provider-id>

Перед созданием клиента ознакомьтесь с документацией по настройке и развертыванию Synapse. Функция обратного вызова должна принадлежать компоненту, взаимодействующему с Keycloak; не регистрируйте URL-адрес веб-сайта Element в качестве функции обратного вызова.

Что вам нужно

  • Публичный HTTPS-адрес для Synapse, например https://matrix.example.com, , и доступный эмитент домена Keycloak, например https://sso.example.com/realms/company, .
  • Административный доступ к домену Keycloak, а также к конфигурации и сервису Synapse.
  • Резервная копия текущей конфигурации и возможность использования журналов Synapse или консоли сервера в случае сбоя входа в систему.
  • Решение о предоставлении учетных записей: какие пользователи Keycloak могут входить в систему, какой параметр их идентифицирует и нужно ли сохранять существующие учетные записи Matrix.

Настройка Keycloak для Synapse OIDC

1. Создайте конфиденциальный OIDC-клиент.

В области действия учетных записей Matrix создайте клиента для Synapse, используя протокол OpenID Connect. Включите код авторизации или стандартный поток и аутентификацию клиента, чтобы Synapse мог использовать секретный ключ клиента в конечной точке токена. Установите идентификатор клиента на значение, которое вы также будете использовать в Synapse, например synapse.

Установите допустимый URI перенаправления на точный адрес обратного вызова Synapse:

https://matrix.example.com/_synapse/client/oidc/callback

Замените пример имени хоста на фактически настроенный для Synapse публичный базовый URL-адрес. Не используйте широкий подстановочный знак, как *в производственной среде. Keycloak проверяет URI перенаправления, поэтому несоответствие хоста, схемы, пути или завершающей косой черты может привести к ошибке «URI перенаправления не разрешен».

Сохраните клиент, скопируйте сгенерированный секрет и сохраните его как секрет на стороне сервера. Не допускайте его попадания в публичный репозиторий Element Web config.json, систему контроля версий, скриншоты и клиентский JavaScript. В консоли администратора Keycloak аутентификация клиента или учетные данные могут отличаться в разных версиях; убедитесь, что полученный клиент является конфиденциальным и может использовать стандартный поток авторизации.

2. Подтвердите эмитента и требования.

Эмитент определяет область действия, а не корневой каталог сервера Keycloak. В этом примере используйте https://sso.example.com/realms/company. Убедитесь, что конфигурация OpenID области действия доступна по адресу <issuer>/.well-known/openid-configurationи что заявленный эмитент точно соответствует значению, которое вы передадите Synapse.

Synapse требуется стабильное утверждение идентификации для связи учетной записи Keycloak с пользователем Matrix. Его поставщик OIDC обычно идентифицирует внешнего субъекта, используя утверждение субъекта OIDC; в приведенном ниже сопоставлении имен пользователей preferred_usernameв качестве локальной части Matrix используется именно это утверждение. Убедитесь, что Keycloak действительно возвращает это утверждение и что имена пользователей уникальны и стабильны в соответствии с вашей политикой учетных записей. Если ваша организация разрешает изменение имен пользователей, выберите и протестируйте стратегию сопоставления перед запуском в производство; неожиданное изменение сопоставления может повлиять на то, к какой учетной записи Matrix будет обращаться пользователь.

Настройка Synapse

3. Добавьте поставщика OIDC.

Добавьте запись поставщика в основную конфигурацию Synapse, обычно это `<provider>` homeserver.yaml. Объедините её с существующим YAML-файлом вместо замены других настроек. Замените `emissioner` вашего домена и реальный секретный ключ клиента:

oidc_providers:
  - idp_id: keycloak
    idp_name: "Keycloak"
    issuer: "https://sso.example.com/realms/company"
    client_id: "synapse"
    client_secret: "REPLACE_WITH_THE_CLIENT_SECRET"
    scopes: ["openid", "profile", "email"]
    user_mapping_provider:
      config:
        localpart_template: "{{ user.preferred_username }}"
        display_name_template: "{{ user.name }}"

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

4. При желании можно настроить выход из системы через обратный канал.

По умолчанию выход из одной службы не обязательно завершает сеанс браузера во всех остальных службах. Если вы хотите, чтобы уведомления о выходе из Keycloak завершали сеанс Synapse, включите эту функцию backchannel_logout_enabled: trueв настройках поставщика Keycloak в Synapse и установите URL-адрес выхода из Backchannel Keycloak следующим образом:

https://matrix.example.com/_synapse/client/oidc/backchannel_logout

Это необязательно и зависит от вашей политики выхода из системы и настроек клиента. Проверьте оба способа выхода из системы: выход из Synapse и выход из Keycloak. Не следует предполагать, что выход из Element сам по себе завершает сессию Keycloak.

5. Перезапустите и проверьте работу Synapse.

Проверьте YAML-файл с помощью проверок конфигурации вашего развертывания, затем перезапустите или перезагрузите Synapse, используя метод, поддерживаемый вашим пакетом или контейнером. Просмотрите журналы Synapse на наличие ошибок обнаружения OIDC, аутентификации клиента, обратного вызова или сопоставления утверждений. Сначала используйте тестовую учетную запись и убедитесь, что ее идентификатор матрицы и отображаемое имя соответствуют ожидаемым значениям.

Настройка веб-элемента

6. Сделайте SSO необязательным или обеспечьте автоматическое перенаправление.

Как только Synapse объявит о возможности входа через OIDC, Element Web сможет предложить вариант входа через SSO. Настройки Element sso_redirect_optionsуправляют работой браузера; они не настраивают Keycloak и не хранят секретный ключ клиента. Добавьте подобную настройку в настройки Element Web, config.jsonесли хотите, чтобы неаутентифицированные посетители, попадающие на страницу приветствия или входа, перенаправлялись на доступный поток SSO:

{
  "sso_redirect_options": {
    "immediate": false,
    "on_welcome_page": true,
    "on_login_page": true
  }
}

Для развертывания, действительно требующего входа только через SSO, настройте "immediate": trueзапуск SSO для всех неаутентифицированных пользователей. Это может затруднить доступ к паролю или другим вариантам авторизации, поэтому протестируйте доступ для восстановления и администрирования, прежде чем применять это правило. Если пользователям необходимо выбирать между SSO и другим методом, оставьте автоматическое перенаправление отключенным и проверьте, отображается ли вариант SSO в процессе входа в систему.

Если Synapse использует службу аутентификации Matrix

MAS — это отдельная служба аутентификации, которая может выступать в качестве OIDC-клиента для Keycloak. В этой архитектуре настройте URI перенаправления Keycloak как https://auth.example.com/upstream/callback/<provider-id>, где идентификатор поставщика соответствует конфигурации MAS. Настройте поставщика в разделе MAS upstream_oauth2.providers; затем Element использует поток аутентификации на основе MAS домашнего сервера. Не используйте Synapse /_synapse/client/oidc/callbackдля этого подключения к вышестоящему серверу. MAS требует поставщика OIDC, поддерживающего поток кода авторизации. Формат его конфигурации, необходимый идентификатор поставщика и шаги миграции отличаются от встроенного в Synapse oidc_providers.

Распространенные заблуждения и способы их исправления

  • «Мне нужно всего лишь изменить конфигурацию Element». Element управляет потоком браузера, а Synapse или MAS обрабатывают OIDC. Сначала настройте правильный поставщик на стороне домашнего сервера.
  • «Успешный вход в Keycloak подтверждает правильность сопоставления учетных записей». Аутентификация может пройти успешно, даже если выбрано неверное утверждение localpart или профиля. Протестируйте с пользователем, не работающим в производственной среде, и проверьте полученный идентификатор матрицы.
  • «Система единого входа (SSO) автоматически отключает пароли и регистрацию». Эти политики контролируются домашним сервером и развертыванием. Проверьте настройки входа и регистрации Synapse отдельно и подтвердите утвержденную политику.
  • «Выход из Element приводит к выходу из системы везде». Сессии браузера могут оставаться активными в Keycloak. Настройте и протестируйте выход из системы через обратный канал, если требуется централизованное завершение сессии.

Контрольный список проверки

  • Клиент Keycloak использует поток авторизационного кода, аутентификацию клиента и точный обратный вызов для Synapse или MAS.
  • URL-адрес эмитента соответствует метаданным обнаружения области, а секретный ключ клиента хранится на стороне сервера.
  • Synapse или MAS запускаются без ошибок конфигурации OIDC и предоставляют доступ к предполагаемому методу входа в систему.
  • Тестовый пользователь может войти в систему с новой сессии браузера, попасть в ожидаемую учетную запись Matrix и завершить обычную сессию Element.
  • Правила выхода из системы, существующие учетные записи, ограничения регистрации и любой резервный доступ администратора должны соответствовать вашей политике.

Официальные ссылки

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

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

10 лучших инструментов для сканирования сети с помощью команды ping, позволяющих находить устройства в вашей сети.

Сравните 10 инструментов для сканирования сети (ping sweep) для быстрого обнаружения локальных сетей, кроссплатформенного сканирования и управления IP-адресами. Узнайте, что может — и чего не может — показать сканирование.

6 лучших инструментов управления сетью для отслеживания производительности

6 лучших инструментов управления сетью для отслеживания производительности

Сравните шесть инструментов управления сетью для мониторинга производительности, включая покрытие SNMP, сопоставление, оповещения, модели развертывания и компромиссы в отношении стоимости.

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Лучшие анализаторы Wi-Fi для Windows, iOS и Android

Сравните лучшие программы для анализа Wi-Fi-сетей для Windows, iPhone и Android, включая инструменты для оценки загруженности каналов, зоны покрытия сигнала, тепловых карт и устранения неполадок в сети.

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Ping Monitor: 7 бесплатных инструментов с открытым исходным кодом для проверки доступности сети

Сравните семь бесплатных мониторов ping с открытым исходным кодом, от полноценных сетевых пакетов до специализированных инструментов для измерения задержки, и выберите тот, который лучше всего подходит для проверки доступности, потери пакетов и истории соединений.

QoS в сетях: что делает качество обслуживания и как оно работает.

QoS в сетях: что делает качество обслуживания и как оно работает.

Узнайте, что означает QoS в сетях, как маркировка DSCP и очереди трафика определяют приоритет голосовых, видео- и бизнес-приложений, и что QoS не может исправить.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Лучшее программное обеспечение SFTP-сервера для безопасной передачи файлов.

Сравните надежные SFTP-серверы для Windows и Linux, включая OpenSSH, Bitvise, SolarWinds и SFTPGo. Найдите подходящее решение для ваших потребностей в области безопасности и передачи файлов.

7 лучших инструментов для управления IP-адресами для сетевых команд

7 лучших инструментов для управления IP-адресами для сетевых команд

Сравните семь инструментов управления IP-адресами для обнаружения подсетей, координации DNS и DHCP, инвентаризации сети и управления IP-адресами с открытым исходным кодом.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Рекомендации по мониторингу сети: что отслеживать и какие инструменты использовать.

Создайте практичную систему мониторинга сети с четким охватом устройств, полезными показателями производительности, действенными оповещениями и сравнением SolarWinds NPM, PRTG и OpManager.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

10 лучших инструментов для сканирования сети, позволяющих обнаруживать устройства и IP-адреса.

Сравните инструменты сканирования сети для быстрого обнаружения устройств, кроссплатформенного сканирования IP-адресов и корпоративного управления IP-адресами, получив рекомендации по подбору подходящего варианта для вашей сети.

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Как использовать Nmap для трассировки маршрута и чтения сетевого пути

Используйте опцию --traceroute в Nmap, чтобы сопоставить узлы маршрута с авторизованным хостом, понять вывод информации о узлах и времени кругового обхода (RTT), а также устранить неполадки, связанные с отсутствием ответов, без избыточного сканирования.