Настройка ONLYOFFICE SP и AD FS IdP
Введение
Технология единого входа (англ. Single Sign-On или SSO) — технология, которая позволяет пользователям осуществлять вход в систему только один раз, а затем получать доступ ко множеству приложений/сервисов без повторной аутентификации.
Если на веб-портале существует несколько обширных независимых разделов (форум, чат, блоги и так далее), пройдя процедуру аутентификации в одном из сервисов, пользователь автоматически получает доступ ко всем остальным, что избавляет его от многократного ввода данных своей учетной записи.
SSO — это всегда совместная работа двух приложений: поставщика учетных записей и поставщика сервиса (англ. Identity Provider и Service Provider, далее по тексту сокращенно «IdP» и «SP»). ONLYOFFICE SSO реализует только SP. В качестве IdP может выступать множество различных провайдеров, но в этой статье мы рассмотрим реализацию Active Directory Federation Services (AD FS).
Если вы хотите использовать SSO при подключении десктопных редакторов ONLYOFFICE к ONLYOFFICE Workspace, отключите Приватные комнаты в Панели управления.
Системные требования
Системные требования включают в себя следующее программное обеспечение, которое было протестировано и корректно работает с ONLYOFFICE SSO:
- Windows Server 2008 R2, Windows Server 2016;
- AD FS версии 3.0 или более поздней версии.
Подготовка ONLYOFFICE Workspace для настройки SSO
- Установите ONLYOFFICE Workspace для Docker или любую более позднюю версию с поддержкой SSO (AD FS поддерживается, начиная с версии 9.5 Сервера совместной работы).
- Привяжите доменное имя, например,
myportal-address.com. - На портале перейдите в Панель управления > HTTPS, создайте и примените сертификат letsencrypt для шифрования трафика (для включения HTTPS на портале).
Подготовка AD FS для настройки SSO
-
Установите последнюю версию AD DS (Active Directory Domain Service) со всеми официальными обновлениями и исправлениями.
-
Установите последнюю версию AD FS со всеми официальными обновлениями и исправлениями.
Для развертывания AD FS с нуля можно воспользоваться следующей инструкцией.
-
Проверьте, что ссылка на файл метаданных AD FS доступна публично. Для этого:
-
В консоли Диспетчер сервера откройте Tools (Инструменты) > AD FS Management (Управление AD FS),
-
Перейдите в AD FS \ Service \ Endpoints (AD FS \ Служба \ Конечные точки),
-
Найдите в таблице строку с типом Federation Metadata (Метаданные федерации). Ссылка на файл метаданных IdP формируется по следующей схеме:
https://{ad-fs-domain}/{path-to-FederationMetadata.xml}
Можно также воспользоваться следующей командой PowerShell:
PS C:\Users\Administrator> (Get-ADFSEndpoint | Where {$_.Protocol -eq "FederationMetadata" -or $_.Protocol -eq "Federation Metadata"}).FullUrl.ToString()В результате вы должны получить ссылку следующего вида:
https://onlyofficevm.northeurope.cloudapp.azure.com/FederationMetadata/2007-06/FederationMetadata.xml -
Для проверки, что AD FS стартовал корректно, откройте ссылку в браузере. Должен отобразиться или скачаться XML-файл. Скопируйте ссылку на XML-файл метаданных: она потребуется на следующем шаге.
-
Настройка ONLYOFFICE SP
-
Убедитесь, что вы зашли в качестве администратора в Панель управления ONLYOFFICE, и щелкните вкладку SSO в разделе НАСТРОЙКИ ПОРТАЛА на левой боковой панели.
примечаниеВы можете зарегистрировать только одного корпоративного поставщика учетных записей для вашей организации на портале ONLYOFFICE.

-
Включите SSO, используя переключатель Включить аутентификацию с помощью технологии единого входа. Ссылку, скопированную из AD FS, вставьте в поле URL-адрес XML-файла метаданных IdP.

Нажмите кнопку со стрелкой вверх, чтобы загрузить метаданные IdP. Форма Настройки поставщика сервиса ONLYOFFICE будет автоматически заполнена данными из AD FS IdP.
-
В поле Пользовательская надпись для кнопки входа вы можете ввести любой текст вместо стандартного (Single Sign-on). Этот текст будет отображаться на кнопке для входа с помощью сервиса Single Sign-on на странице аутентификации ONLYOFFICE.
-
В селекторе Формат NameID выберите следующее значение: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress.
-
В разделе Открытые сертификаты поставщика учетных записей \ Дополнительные параметры уберите галочку Проверять подпись ответов выхода, так как AD FS не требует этого по умолчанию.

-
Добавьте сертификаты в раздел Сертификаты поставщика сервиса. Можно сгенерировать самоподписанные сертификаты или добавить любые другие.
примечаниеВ окне Новый сертификат переключите селектор Использовать для на signing and encrypt, так как AD FS IdP автоматически настроен на проверку цифровой подписи и шифрование данных.

Должно получиться примерно так:

-
В разделе Сертификаты поставщика сервиса \ Дополнительные параметры уберите галочку Подписывать ответы выхода, так как AD FS не требует этого по умолчанию.
примечаниеФорму Сопоставление атрибутов настраивать не нужно. В разделе Дополнительные параметры можно включить настройку Скрыть страницу аутентификации, чтобы скрыть страницу аутентификации по умолчанию и автоматически перенаправлять на сервис SSO.
ВажноЕсли вам необходимо восстановить страницу аутентификации по умолчанию (чтобы иметь доступ к порталу, если ваш сервер IdP выйдет из строя), можно добавить ключ
/Auth.aspx?skipssoredirect=trueпосле доменного имени портала в адресной строке браузера. -
Нажмите Сохранить. Должен открыться раздел Метаданные поставщика сервиса ONLYOFFICE.

Проверьте, что настройки доступны публично, нажав СКАЧАТЬ XML-ФАЙЛ МЕТАДАННЫХ ПОСТАВЩИКА СЕРВИСА. Должно отобразиться содержимое XML-файла.
-
Скопируйте ссылку на файл метаданных ONLYOFFICE SP из поля Идентификатор сущности поставщика сервиса (ссылка на XML-файл метаданных) и перейдите на машину, где установлен AD FS.

Настройка AD FS IdP
-
Включите строгую проверку подлинности для приложений .NET.
Приложения .NET Framework 3.5/4.0/4.5.x можно переключить на протокол по умолчанию TLS 1.2, включив раздел реестра
SchUseStrongCrypto. Этот раздел реестра принудительно заставит приложения .NET использовать TLS 1.2.примечаниеДля AD FS на Windows Server 2016 и Windows Server 2012 R2 используйте ключ .NET Framework 4.0/4.5.x: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319
Для .NET Framework 3.5 используйте следующий раздел реестра:
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v2.0.50727] "SchUseStrongCrypto"=dword:00000001Для .NET Framework 4.0/4.5.x используйте следующий раздел реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319 "SchUseStrongCrypto"=dword:00000001
Можно также воспользоваться следующей командой PowerShell:
New-ItemProperty -path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -name 'SchUseStrongCrypto' -value '1' -PropertyType 'DWord' -Force | Out-NullДля получения дополнительной информации обратитесь к этой статье.
-
В консоли Диспетчер сервера откройте Tools (Инструменты) > AD FS Management (Управление AD FS),

-
В панели управления AD FS выберите Trust Relationships > Relying Party Trusts (Отношения доверия > Отношения доверия проверяющей стороны). Выберите команду Add Relying Party Trust... (Добавить отношение доверия проверяющей стороны...) справа. Откроется Мастер добавления отношений доверия проверяющей стороны,

-
В окне мастера выберите переключатель Import data about the relying party published online or on a local network (Импорт данных о проверяющей стороне, опубликованных в Интернете или локальной сети), вставьте скопированную ранее ссылку на файл метаданных ONLYOFFICE SP в поле Federation metadata address (host name or URL) (Адрес метаданных федерации (имя узла или URL-адрес)) и нажмите кнопку Next (Далее),

-
В поле Display name (Отображаемое имя) укажите любое имя и нажмите кнопку Next (Далее),

-
Выберите опцию I do not want to configure multi-factor authentication settings for this relying party trust at this time (Сейчас не настраивать параметры для этого отношения доверия с проверяющей стороной) и нажмите кнопку Next (Далее),

-
Выберите опцию Permit all users to access this relying party (Разрешить доступ к этой проверяющей стороне всем пользователям) и нажмите кнопку Next (Далее),

-
Проверьте полученные настройки и нажмите кнопку Next (Далее),

-
Оставьте опцию, выбранную по умолчанию, без изменений и нажмите кнопку Close (Закрыть),

-
Откроется новое окно. На вкладке Issuance Transform Rules (Правила преобразования выдачи) нажмите кнопку Add Rule... (Добавить правило...),

-
Выберите опцию Send LDAP Attributes as Claims (Отправка атрибутов LDAP как утверждений) из списка Claim rule template (Шаблон правила утверждения) и нажмите кнопку Next (Далее),

-
Напишите любое имя в поле Claim rule name (Имя правила утверждения). Выберите опцию Active Directory из списка Attribute store (Хранилище атрибутов) и заполните форму Mapping of LDAP attributes to outgoing claim types (Сопоставление атрибутов LDAP типам исходящих утверждений) согласно приведенной ниже таблице. Когда все будет готово, нажмите Finish (Завершить).
LDAP Attribute (Атрибут LDAP) Outgoing Claim Type (Тип исходящего утверждения) Given-Name givenName Surname sn E-Mail-Addresses mail Telephone-Number mobile Title title physicalDeliveryOfficeName l 
-
В окне Edit Claim Rules (Изменить правила утверждений) снова нажмите кнопку Add Rule... (Добавить правило...), выберите опцию Transform an Incoming Claim (Преобразование входящего утверждения) из списка Claim rule template (Шаблон правила утверждения) и нажмите кнопку Next (Далее),

-
Напишите любое имя в поле Claim rule name (Имя правила утверждения) и выберите следующие параметры из списков:
- Incoming claim type (Тип входящего утверждения): mail,
- Outgoing claim type (Тип исходящего утверждения): Name ID,
- Outgoing name ID format (Формат ИД исходящего имени): Email

Когда все будет готово, нажмите кнопку Finish (Завершить).
Должно получиться примерно так:

Если не будет работать выход (logout) из AD FS, рекомендуется добавить Custom Claim Rule (настраиваемое правило утверждения), заменив
{portal-domain}на домен своего SP, а{ad-fs-domain}на домен IdP:c:[Type == "mail"]=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/namequalifier"] = "http://{ad-fs-domain}/adfs/services/trust", Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/spnamequalifier"] = "https://{portal-domain}/sso/metadata");
-
Нажмите OK.
-
Для работы SSO из интранета включите опцию Forms Authentication (Проверка подлинности с помощью форм) в окне Edit Global Authentication Policy (Изменить глобальную политику проверки подлинности), вызываемом через контекстное меню AD FS / Authentication Policies (AD FS / Политики проверки подлинности),

-
Откройте свойства созданной проверяющей стороны и перейдите на вкладку Advanced (Дополнительные параметры),

Выберите опцию SHA-1 в списке Secure hash algorithm (Алгоритм SHA).

Проверка работы ONLYOFFICE SP и AD FS IdP
Вход в ONLYOFFICE на стороне SP
-
Перейдите на страницу аутентификации ONLYOFFICE (например,
https://myportal-address.com/auth.aspx). -
Нажмите на кнопку Single sign-on (название кнопки может отличаться, если вы указали свой вариант при настройке ONLYOFFICE SP). Если этой кнопки нет, значит, SSO не включен.

-
Если все настроено верно в SP и IdP, вы будете перенаправлены на форму входа в AD FS IdP:

-
Введите логин и пароль учетной записи в AD FS IdP и нажмите кнопку Sign in.
-
Если учетные данные указаны правильно, вы будете перенаправлены на главную страницу портала. Учетная запись пользователя будет создана автоматически, если ее еще нет, или обновлена, если данные были изменены в IdP.
Профили пользователей, добавленных с помощью SSO-аутентификации
Возможность редактирования профилей пользователей, созданных с помощью SSO-аутентификации, ограничена. Поля профиля пользователя, полученные из IdP, заблокированы для редактирования (а именно: Имя, Фамилия, Email, Должность и Местоположение). Эти поля можно отредактировать только из вашей учетной записи в IdP.
На следующем изображении показано меню «Действия» для пользователя SSO:

На следующем изображении показан профиль пользователя SSO, открытый на редактирование:

Пользователи, созданные с помощью SSO-аутентификации, отмечены в списке пользователей значком SSO для администраторов портала:
