Indeed SAML IDP + Nextcloud
Автор Maksim Efanov, Last modified by Maksim Efanov на 18 марта 2024 01:24 PM

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

  • Установленный и настроенный Indeed SAML IdP (версия 8.0.1 и выше) (https://confluence.indeed-id.com/display/IAM8D/Indeed+AM+SAML+IDP)
  • Установленный и настроенный Nextcloud.
  • Установленные сертификаты для https подключения на Indeed SAML IdP и Nextcloud.
  • Выданные следующие DNS имена
    Nextcloud: NextCloud.iid.local
    Indeed SAML: dc.iid.local

Примечание: В Nextcloud есть основное уникальное поле пользователя (по умолчанию UID), в данном примере будет использоваться UPN.

Настройка Nextcloud

  1. Устанавливаем плагин SSO & SAML authentication

  2. Переходим в настройки - администрирование - SSO & SAML authentication.
  3. Включаем пункт: "Allow the use of multiple user back-ends (e.g. LDAP)", иначе можно потерять доступ к Nextcloud, в случае ошибки настройки.
  4. Добавляем новый провайдер аутентификации:

  5. В появившихся полях указываем:
    UID - имя поля, которое будет обязательным, и чей поиск будет выполняться в ответе от Indeed SAML IdP (название может быть произвольным).
    IndeedSAMLidP - название провайдера, которое будет отображаться на странице входа в Nextcloud в виде кнопки (может быть произвольным).

  6. Далее указываем параметры Indeed SAML Idp:

    urn:indeedid:saml_idp - имя Indeed SAML idp (по умолчанию)
    https://dc.iid.local/iidsamlidp/Account/SsoService - адрес страницы входа для SAML идентификации
    https://dc.iid.local/iidsamlidp/Account/Logout - страница выхода SAML, если требуется перенаправление на страницу входа Nextcloud, то указываем её (в данном случае это может быть https://nextcloud.iid.local/)
    Public x509 certificate of the idP - указывается открытый ключ сертификата SAML idP.
    Получить его можно с помощью конвертирования сертификата SAML через Openssl: openssl x509 -inform DER -in saml.cer -out saml.crt

  7. Маппинг атрибутов:
     

    Если требуется, то SAML idP может передать дополнительные параметры для аутентификации пользователя (например, если пользователя еще нет в Nextcloud, то при успешном входе через SAML, эти параметры будут использованы для создания его профиля).

    В данном случае мы можем указать UPN имя в email, и передать Name, для маппинга в displayname.

  8. Остальные настройки пока оставляем без изменений.

    Если Metadata valid, то скачиваем метаданные, и открываем:

    Отсюда, для дальнейшей настройки, нам понадобится следующая запись: https://nextcloud.iid.local/index.php/apps/user_saml/saml/metadata

Настройка Indeed SAML IdP

  1. Переходим в каталог C:\inetpub\wwwroot\am\idp и открываем конфигурационный файл saml.config

  2. Добавляем запись вида:
    <PartnerServiceProvider Name="https://nextcloud.iid.local/index.php/apps/user_saml/saml/metadata"
                              WantAuthnRequestSigned="false"
                              SignSAMLResponse="true"
                              SignAssertion="false"
                              EncryptAssertion="false"/>


    где,

    https://nextcloud.iid.local/index.php/apps/user_saml/saml/metadata - ссылка на метаданные nextcloud, из прошлого пункта,
    SignSAMLResponse="true" - подпись ответа сертификатом.

  3. Сохраняем и закрываем файл.

  4. Открываем на редактирование файл Web.config

  5. Добавляем в тэг
    <amAuthFormats></amAuthFormats> 

    новую запись:
    <amAuthFormat id="https://nextcloud.iid.local/index.php/apps/user_saml/saml/metadata" inLoginFormat="Name" outLoginFormat="PrincipalName" />

  6. Добавляем также следующий тег:
    <amAuthCustomAttributes serviceProvider="https://nextcloud.iid.local/index.php/apps/user_saml/saml/metadata" >
          <amAuthCustomAttribute attributeName="UID" userNameFormat="PrincipalName" />
      <amAuthCustomAttribute attributeName="Name" userNameFormat="Name" />
        </amAuthCustomAttributes>

  7. Сохраним изменения.

  8. Теперь проверим, что всё работает:

  9. При нажатии на “IndeedSAMLidP” нас перенаправит на Indeed SAML


Включение дополнительной проверки подписей и шифрования.

На стороне Indeed Saml idP:

  1. Переходим в каталог C:\inetpub\wwwroot\am\idp и открываем конфигурационный файл saml.config

<PartnerServiceProvider Name="https://nextcloud.iid.local/index.php/apps/user_saml/saml/metadata"
                          WantAuthnRequestSigned="true"
                          SignSAMLResponse="true"
                          SignAssertion="true"
                          EncryptAssertion="true"
  CertificateFile="C:\inetpub\wwwroot\iidsamlidp\nextcloud\nextcloudsitecert.crt"/>

где:

WantAuthnRequestSigned - требование подписи запроса
SignAssertion - требование подписи утверждения
EncryptAssertion - шифрование утверждения
CertificateFile - путь к открытому ключу сертификата, которым будет подписывать запросы nextcloud, для самого сертификата требуется указать разрешение на доступ для сервисной учетной записи (в случае ошибки, также можно указать IUSRS)

На стороне Nextcloud:

  1. Указываем закрытый и открытый ключ сертификата, для подписи и проверки:

    Их можно получить с помощью OpenSSL из сертификата pfx для Nextcloud:

    #экспорт конечного сертификата без цепочки сертификатов без закрытого ключа
    openssl.exe pkcs12 -in nextcloud.pfx -clcerts -nokeys -out nextcloud.crt

    #экспорт закрытого ключа без открытого
    openssl.exe pkcs12 -in nextcloud.pfx -nocerts -out nextcloud.pem


    После чего можно можно включить дополнительные требования к подписям и шифрованию:

(5 голос(а))
Эта статья полезна
Эта статья бесполезна

Комментарии (0)
Добавить новый комментарий
 
 
Полное имя:
Email:
Комментарии: