AD FS IdP
Введение
Единый вход (Single Sign-on, SSO) — это технология, позволяющая пользователям входить в систему только один раз и затем получать доступ к нескольким приложениям и сервисам без повторной аутентификации.
Если веб-портал состоит из нескольких крупных независимых разделов (форум, чат, блоги и т. д.), пользователь может пройти аутентификацию в одном из сервисов и автоматически получить доступ ко всем остальным, не вводя учетные данные несколько раз.
Единый вход всегда обеспечивается совместной работой двух приложений: поставщика учетных записей и поставщика сервиса (их также называют «IdP» и «SP»). ONLYOFFICE SSO реализует только SP. В роли IdP могут выступать самые разные поставщики, но в этой статье рассматривается реализация Active Directory Federation Services (AD FS).
Подготовка 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://myportal-address.com/FederationMetadata/2007-06/FederationMetadata.xml -
Чтобы проверить, что AD FS запущен корректно, откройте полученную ссылку в браузере. Должен отобразиться или скачаться XML-файл.

Скопируйте ссылку на XML-файл метаданных: она потребуется на следующем шаге. Убедитесь, что вы вошли в ONLYOFFICE Apps как администратор. Откройте страницу Настройки -> Интеграция -> Единый вход.
-
Настройка ONLYOFFICE SP
-

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

-
Нажмите кнопку со стрелкой вверх, чтобы загрузить метаданные IdP. Форма Настройки поставщика сервиса ONLYOFFICE будет автоматически заполнена данными из AD FS IdP.

-
В селекторе Формат NameID выберите следующее значение: urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress.
-
В разделе Публичные сертификаты IdP \ Расширенные настройки снимите флажок Проверять подпись ответов выхода, так как AD FS не требует этого по умолчанию.

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

-
В разделе Сертификаты поставщика сервиса \ Расширенные настройки снимите флажок Подписывать ответы на запросы выхода, так как AD FS не требует этого по умолчанию.

-
Форму Сопоставление атрибутов настраивать не нужно, так как эти параметры мы зададим позже в AD FS IdP.
-
Нажмите кнопку Сохранить.
-
Должен открыться раздел Метаданные поставщика сервиса ONLYOFFICE.

-
Проверьте, что настройки доступны публично, нажав кнопку Загрузить XML-файл метаданных поставщика сервиса. Должно отобразиться содержимое XML-файла.

-
Скопируйте ссылку на файл метаданных ONLYOFFICE SP из поля Идентификатор сущности поставщика сервиса (ссылка на XML-файл метаданных) и перейдите на машину, где установлен AD FS.
Настройка AD FS IdP
-
В консоли Диспетчер сервера откройте Tools (Инструменты) -> AD FS Management (Управление AD FS),

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

-
В окне мастера выберите переключатель 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 (Далее),

-
Выберите вариант Permit everyone (Разрешить всем) и нажмите кнопку Next (Далее),

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

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

-
Откроется новое окно. На вкладке Edit Claim Issuance Policy нажмите кнопку 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 
-
В окне 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 (Завершить).
-
Если выход из 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,
-
Откройте свойства созданной проверяющей стороны и перейдите на вкладку Advanced (Дополнительные параметры),
Выберите вариант SHA-1 в списке Secure hash algorithm (Алгоритм SHA).
