Indeed SAML IDP + Nextcloud (для версии 8.1.5 и выше)
Автор Kirill Osipov, Last modified by Kirill Osipov на 24 мая 2024 03:17 PM

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

  • Установленный и настроенный Indeed AM Identity Provider (8.1.5 и выше) (Indeed Identity Provider | Документация Indeed Access Manager)
  • Установленный и настроенный Nextcloud (на работу по https).
  • Установленные сертификаты для https подключения на Indeed AM IDP и Nextcloud.
  • Выданное DNS имя для:
    Nextcloud: nextcloud.indeed-test.com

Примечание: Nextcloud следует разворачивать через Snap. Чтобы у него было доверия к сертификатам, требуется экспортировать доменный сертификат nextcloud, конвертировать его в pem, скопировать его на машину с Nextcloud и активировать https.
Путь до хранилища сертификатов: /var/snap/nextcloud/<версия>/certs/live/
Команда активации https:
sudo nextcloud.enable-https custom -s cert.pem privkey.pem chain.pem.
- cert.pem и chain.pem
содержат только сам сертификат;
- privkey.pem
содержит только закрытый ключ;



Настройка Nextcloud

  1. Заходим в Приложения, находим и устанавливаем SSO & SAML authentication


  2. Далее заходим в Параметры сервера - Подтверждение подлинности



  3. Включаем пункт: "Разрешить использование нескольких пользовательских back-end (например, LDAP)", иначе можно потерять доступ к Nextcloud, в случае ошибки настройки.

  4. Добавляем новый провайдер аутентификации:


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

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



    Указываем сертификат и закрытый ключ в открытом виде (Доменный сертификат для Nextcloud).

    Получить его можно с помощью конвертирования сертификата nextcloud через Openssl: openssl x509 -inform DER -in nextcloud.cer -out nextcloud.crt, или экспортировать в открытом виде и открыть текстовым редактором;



    urn:indeedid:saml_idp - имя Indeed AM SAML idp (по умолчанию);
    https://indeedam2.indeed-test.com/am/idp/Account/SsoService - адрес страницы входа для SAML идентификации;
    https://nextcloud.indeed-test.com - URL адрес страницы Nextcloud;
    Открытый x509 сертификат IDP - указывается открытый ключ сертификата IDP (сертификат, который генерируется при установке модуля 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.indeed-test.com/index.php/apps/user_saml/saml/metadata

Настройка Indeed Identity Provider

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

  2. Добавляем запись вида:

    {
    "ServiceProvider": "https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/metadata",
    "InLoginFormat": "Name",
    "OutLoginFormat": "PrincipalName"
    },



    где,

    https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/metadata - ссылка на метаданные nextcloud, из прошлого пункта.

  3. Далее добавляем запись вида:

    {
    "ServiceProvider": "https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/metadata",
    "Attributes": [
    {
    "Name": "UID",
    "UserNameFormat": "PrincipalName"
    },
    {
    "Name": "Name",
    "UserNameFormat": "Name"
    }
    ]
    }

  4. Далее, в раздел "SAML", добавляем запись вида:

    {
    "Name": "https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/metadata",
    "Description": "I am Nextcloud, open please",
    "WantAuthnRequestSigned": true,
    "SignSamlResponse": true,
    "SignAssertion": true,
    "EncryptAssertion": true,
    "AssertionConsumerServiceUrl": "https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/acs",
    "SingleLogoutServiceUrl": "https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/sls",
    "ValidAssertionConsumerServiceUrls": [
    "https://nextcloud.indeed-test.com/index.php/apps/user_saml/saml/acs"
    ],
    "PartnerCertificates": [
    {
    "Thumbprint": "757C10B4F7496D62ED5BBE1D206E2EC300B8534C"
    }
    ]
    },


    где:

    WantAuthnRequestSigned - требование подписи запроса;
    SignSamlResponse - требование подписи Saml запроса;
    SignAssertion - требование подписи утверждения;
    EncryptAssertion - шифрование утверждения;
    Ссылки используются те же, из Metadata, меняется лишь конечный адрес;
    Thumbprint
    - отпечаток доменного сертификата nextcloud;
    Его можно получить выполнив команду в PS: Get-Childitem Cert:\LocalMachine\My\ | Where-Object {$_.Subject -eq "CN=<имя сертификата>"};
    Или посмотреть в оснастке сертификатов:

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


  6. При нажатии на “IndeedAMSAML” нас перенаправит на Indeed AM IDP







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

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