Nextcloud + ADFS 2FA
Автор Viktor Barmakov, Last modified by Vladislav Fomichev на 13 ноября 2023 04:11 PM

Предусловия:

  • Установленный и настроенный Indeed AM.
  • Установленный и настроенный ADFS Extension.
  • Развёрнутый Nextcloud.
  • В данной инструкции будут использоваться следующие DNS имена:
    • Nextcloud - nc.indeed2.local
    • Indeed ADFS - adfs.indeed2.local

Настройка в Nextcloud

  1. Заходим в Nextcloud от имени администратора Nextcloud'а.
  2. Переходим в Настройки -> Параметры сервера -> Подтверждение подлинности SSO и SAML.
  3. В общих настройках ставим галочку на значении "Разрешить использование нескольких пользовательских back-end (например, LDAP)"
  4. Добавляем нового поставщика удостоверений
  5. Указываем в полях ниже:
    • UID - имя поля, которое будет обязательным, и чей поиск будет выполняться в ответе от Indeed ADFS (название может быть произвольным).
    • IndeedAMADFS - название провайдера, которое будет отображаться на странице входа в Nextcloud в виде кнопки (может быть произвольным).
  6. Далее указываем параметры Indeed ADFS:

                    Примечание

                    В URL ссылках ниже вместо “adfs.indeed2.local” указываете полное DNS имя своего сервера с развёрнутой ролью AD FS и Indeed ADFS Extension.

    • Идентификатор записи IdP (в формате URL): http://adfs.indeed2.local/adfs/services/trust
    • URL провайдера идентификации (IdP), на который поставщик услуг (SP) будет отправлять запрос: https://adfs.indeed2.local/adfs/ls/idpinitiatedsignon.aspx
      Раскрываем дополнительные настройки и указываем параметры:
    • URL адрес IdP, куда SP будет отправлять запросы SLO: https://adfs.indeed2.local/adfs/ls/?wa=wsignout1.0
    • URL адрес ответа IDP SLO: https://adfs.indeed2.local/adfs/ls

      Для заполнения поля "Открытый сертификат X.509 IdP" нам понадобится экспортировать сертификат для подписи маркера с сервера AD FS.

      Для этого на сервере ADFS в оснастке:
      1. AD FS -> Служба -> Сертификаты.
      2. ПКМ по сертификату "Для подписи маркера" и нажимаем "Просмотр сертификата".
      3. В появившемся окне нажимаем "Состав" и "Копировать в файл..."
      4. Копируем в кодировке Base-64 в любое удобное место.
      5. Экспортированный сертификат открываем в любом текстовом редакторе и полностью копируем содержимое.
        Возвращаемся в Nextcloud на страницу настройки ADFS.
    • Открытый сертификат X.509 IdP: содержимое файла сертификата копируем в данное поле.
      По итогу должно получиться следующее:

      Если введённые данные корректны, то внизу будет выведено "Метаданные верны".
      Нажимаем "Скачать метаданные XML". Они нам пригодятся при настройке на сервере с AD FS.

Настройка на сервере с AD FS

  1. Настраиваем AD FS 2FA в соответствии с инструкцией.
  2. Открываем оснастку AD FS -> Отношения доверия проверяющей стороны.
  3. Справа нажимаем "Добавить отношение доверия проверяющей стороны...".

  4. В мастере добавления отношений доверия проверяющей стороны:
    1. На этапе "Добро пожаловать!" оставляем выбранным "Поддерживающие утверждения" и нажимаем "Запустить".
    2. На этапе "Выбор источника данных" нажимаем "Импорт данных о проверяющей стороне из файла" и выбираем ранее скачанный файл с метаданными.
    3. На этапе "Указание отображаемого имени" вписываем отображаемое имя и, если нужно, примечания.
    4. На этапе "Выбрать политику управления доступом" выбираем "Разрешение для каждого и запрос MFA".
    5. Нажимаем "Далее" до последнего шага и закрываем мастер.
  5. Выбираем созданное отношение доверия и справа нажимаем "Изменить политику подачи запросов".
  6. В открывшемся окне нажимаем "Добавить правило".
  7. В мастере добавления правила преобразования утверждения:
    1. На этапе "Выберите тип правила" указываем "Отправка атрибутов LDAP как утверждений" и нажимаем "Далее".
    2. На этапе "Настройте правило утверждения" указываем:
      1. Имя правила утверждения: UID (может быть произвольным).
      2. Хранилище атрибутов: Active Directory.
      3. В таблице в первом столбце "Атрибут LDAP": User-Principal-Name.
      4. В таблице во втором столбце "Тип исходящего утверждения": UID.
    3. Нажимаем “Готово
  8. В диспетчере задач перезапускаем службу adfssrv.

Проверка работоспособности

  1. Переходим на страницу входа в Nextcloud и видим новый способ входа (IndeedAMADFS).
  2. При нажатии на “IndeedAMADFS” нас перенаправит на страницу входа ADFS, на которой вводим свои доменные учётные данные.
  3. Далее нас перенаправляет на ввод второго фактора.
  4. После корректно введённых данных попадаем в профиль пользователя Nextcloud.