Keycloak IdP
Введение
Единый вход (Single Sign-On, SSO) — это технология, позволяющая пользователям входить в систему только один раз и затем получать доступ к нескольким приложениям и сервисам без повторной аутентификации.
Если веб-портал состоит из нескольких крупных независимых разделов (форум, чат, блоги и т. д.), пользователь может пройти аутентификацию в одном из сервисов и автоматически получить доступ ко всем остальным, не вводя учетные данные несколько раз.
Единый вход всегда обеспечивается совместной работой двух приложений: поставщика учетных записей и поставщика сервиса (их также называют IdP и SP). ONLYOFFICE SSO реализует только SP. В роли IdP могут выступать самые разные поставщики, но в этой статье рассматривается Keycloak.
Создание IdP в Keycloak
-
Войдите в Keycloak как администратор.
-
Перейдите в раздел Manage realms и выберите realm, в котором будет настроено подключение.
-
Перейдите в раздел Clients и нажмите кнопку Create client.
-
На открывшейся странице укажите следующее: в поле Client type выберите SAML. В поле Client ID введите
https://myportal-address.com/sso/metadata, заменив myportal-address.com на доменное имя вашего рабочего пространства. В полях Name и Description введите любые название и описание клиента.
-
Нажмите кнопку Next.
-
Заполните следующие поля:
примечаниеЗамените
myportal-address.comна доменное имя вашего рабочего пространства.Application Details Root URL https://myportal-address.com/ssoHome URL https://myportal-address.com/ssoValid redirect URIs https://myportal-address.com/sso/slo/callbackhttps://myportal-address.com/sso/acsValid post logout redirect URIs https://myportal-address.com/sso/slo/callbackMaster SAML Processing URL https://myportal-address.com/sso/acs
Заполните следующие поля на вкладке Advanced:
Assertion Consumer Service POST Binding URL https://myportal-address.com/sso/acsAssertion Consumer Service Redirect Binding URL https://myportal-address.com/sso/acsLogout Service POST Binding URL https://myportal-address.com/sso/slo/callbackLogout Service Redirect Binding URL https://myportal-address.com/sso/slo/callback
-
Нажмите кнопку Save.
-
В разделе SAML capabilities установите для Name ID format значение email.
-
В разделе Signature and Encryption включите параметр Sign Assertions и выберите алгоритм подписи: RSA_SHA1, RSA_SHA256 или RSA_SHA512.
-
Нажмите кнопку Save.
-
Перейдите в раздел Client Scopes и нажмите ссылку с названием вашего рабочего пространства
https://myportal-address.com/sso/metadata-dedicated.Нажмите кнопку Add predefined mappers и в появившемся окне выберите следующие мапперы:
- X500 email
- X500 givenName
- X500 surname
Затем нажмите кнопку Add.

Настройка ONLYOFFICE SP
-
Убедитесь, что вы вошли в рабочее пространство ONLYOFFICE Apps как администратор, перейдите в меню Настройки, выберите раздел Интеграция и откройте вкладку Единый вход.
-
Включите SSO с помощью переключателя Включить аутентификацию с помощью технологии единого входа (SSO) и вставьте
https://<keycloakurl>/realms/<realm_name>/protocol/saml/descriptorв поле URL-адрес XML-файла метаданных. Замените<keycloakurl>и<realm_name>на адрес вашего сервера Keycloak и название realm, в котором было создано подключение. Итоговая ссылка должна быть доступна из браузера.
-
Нажмите кнопку со стрелкой вверх, чтобы загрузить метаданные IdP. Форма настроек поставщика сервиса ONLYOFFICE будет автоматически заполнена данными из Keycloak IdP.
-
Выберите такой же Алгоритм проверки подписи по умолчанию, как указан в Keycloak.
-
Измените Формат NameID на emailAddress.
-
Теперь необходимо создать сертификат в разделе Сертификаты поставщика сервиса. Для этого нажмите кнопку Добавить сертификат.
-
В открывшемся модальном окне нажмите ссылку Сгенерировать новый самоподписанный сертификат и выберите вариант Подпись и шифрование в списке Использовать для. Перед сохранением сертификата скопируйте текст Открытый сертификат в буфер обмена и сохраните его в файл (он понадобится для Keycloak), затем нажмите кнопку ОК.

-
Перейдите в раздел Сопоставление атрибутов и присвойте атрибутам следующие значения:
- Имя: urn:oid:2.5.4.42
- Фамилия: urn:oid:2.5.4.4
- Адрес электронной почты: urn:oid:1.2.840.113549.1.9.1
В разделе Расширенные настройки можно выбрать параметр Скрыть страницу аутентификации, чтобы скрыть страницу аутентификации по умолчанию и автоматически перенаправлять на сервис SSO.
Если нужно восстановить страницу аутентификации по умолчанию (чтобы иметь доступ к рабочему пространству, если ваш сервер IdP выйдет из строя), можно добавить ключ /login?skipssoredirect=true после доменного имени вашего рабочего пространства в адресной строке браузера.
-
Нажмите кнопку Сохранить.
-
Вернитесь в Keycloak, чтобы настроить шифрование: откройте своего клиента и перейдите в раздел Keys. Отключите параметр Client signature required и включите Encrypt assertions. В появившемся окне выберите Import, установите для Archive format значение Certificate PEM и нажмите кнопку Browse. Укажите путь к файлу сертификата из шага 7 и нажмите Confirm.
Проверка работы ONLYOFFICE SP с Keycloak IdP
-
Перейдите на страницу аутентификации ONLYOFFICE Apps (например,
https://myportal-address.com/login). -
Нажмите кнопку Единый вход. Если кнопки нет, значит SSO не включен.
-
Если все параметры SP и IdP заданы правильно, вы будете перенаправлены на форму входа Keycloak IdP:

-
Введите логин и пароль пользователя Keycloak и нажмите кнопку Sign In.
-
Если учетные данные верны, вы будете перенаправлены на главную страницу рабочего пространства (пользователь будет создан автоматически, если его нет, или данные будут обновлены, если они изменились в IdP).
