• Post category:Настройки
  • Запись изменена:25.03.2025

Содержание

Системные требования:

Требуется сертификат типа wildcard для Корпоративного сервера 2024 приобретённый в центре сертификации (например, Let’s Encrypt, GlobalSign и др.).

1. Подготовка AD FS для настройки SSO

1.1. Проверьте, что ссылка на файл метаданных 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}

Настройка SSO в связке Р7-Диск SP и AD FS IdP

  • Можно также воспользоваться следующей командой PowerShell:
(Get-ADFSEndpoint | Where {$_.Protocol -eq "FederationMetadata" -or $_.Protocol -eq "Federation Metadata"}).FullUrl.ToString()
  • В результате вы должны получить ссылку следующего вида:

https://testad.devr7.ru/FederationMetadata/2007-06/FederationMetadata.xml

  • Для проверки, что AD FS стартовал корректно, перейдите в браузере по ссылке, полученной ранее. Должна скачаться/отобразится xml. Скопируйте ссылку на xml-файл метаданных: она потребуется на следующем шаге.

1.2. Проверьте/включите проверку подлинности с помощью форм

  • Для работы SSO из интранета потребуется включить опцию Forms Authentication (Проверка подлинности с помощью форм) в окне Edit Global Authentication Policy (Изменить глобальную политику проверки подлинности), вызываемом через контекстное меню AD FS / Authentication Policies (AD FS / Политики проверки подлинности),

Настройка SSO в связке Р7-Диск SP и AD FS IdP

1.3. Включение поддержки протокола TLS 1.2

1.3.1. Для того чтобы добавить AD FS в IdP в Microsoft Active Directory Federation Service на сервере Microsoft Windows Server 2019 или ниже необходимо включить поддержку протокола TLS 1.2

  • Запустите Windows PowerShell с параметром «Запуск от имени администратора».
  • Выполните следующие команды, чтобы включить TLS2 на клиенте ADFS:
New-Item ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client’ -Force
New-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client’ -name ‘Enabled’ -value ‘1’ –PropertyType ‘DWORD’
New-ItemProperty -Path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client’ -name ‘DisabledByDefault’ -value ‘0’ –PropertyType ‘DWORD’

1.3.2. Затем выполните следующую команду, чтобы включить строгую аутентификацию:

New-ItemProperty -path ‘HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319’ -name ‘SchUseStrongCrypto’ -value ‘1’ -PropertyType ‘DWord’

1.3.3. (Опционально) Выполните следующие команды, чтобы отключить SSL0 на клиенте ADFS:

New-Item ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client’ -Force | Out-Null
New-ItemProperty -path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\ Protocols\SSL 3.0\Client’ -name ‘Enabled’ -value ‘0’ -PropertyType ‘DWord’ -Force | Out-Null
New-ItemProperty -path ‘HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\ Protocols\SSL 3.0\Client’ -name ‘DisabledByDefault’ -value 1 -PropertyType ‘DWord’ -Force | Out-Null
  • Закройте все окна управления сервером ADFS.

2. Настройка Р7-Диск SP

2.1. Включаем SSO аутентификацию

  • Открываем файл /opt/r7-office/Api/appsettings.json
nano /opt/r7-office/Api/appsettings.json
  • Меняем значение «esiaType»
"esiaType": "saml2",

Если параметр «esiaType» отсутствует, то вы можете добавить его самостоятельно.

Настройка SSO в связке Р7-Диск SP и AD FS IdP

2.2. Настраиваем R7.Sso.Api.Host

Создайте единый сертификат для работы службы синхронизации в формате .pfx

Важно! Не задавайте пароль для сертификата .pfx. Оставьте поле пароля пустым.
Для его создания необходимо наличие закрытого ключа и сертификата.

Для создания такого сертификата выполните команду

openssl pkcs12 -export -in "devr7.ru.crt" -inkey "devr7.ru.key" -out "devr7.ru.pfx"

Где,

  • export указывает на экспорт сертификата в формат PFX.
  • in «devr7.ru.crt» указывает путь к файлу сертификата.
  • inkey «devr7.ru.key» указывает путь к файлу с закрытым ключом.
  • out «devr7.ru.pfx» задает имя файла, в который будет сохранен PFX сертификат.

Разместите сертификат в директории /opt/r7-office/Sso.Api/ и предоставьте на него права 755

В качестве SP сервера выступает R7.Sso.Api.Host

  • Открываем файл /opt/r7-office/Sso.Api/appsettings.json
nano /opt/r7-office/Sso.Api/appsettings.json
{
  "AllowedHosts": "*",
  "Sso": {
    "Host": "http://+:38034"
  },
  "Saml2": {
    "IdPMetadata": "https://testad.devr7.ru/FederationMetadata/2007-06/FederationMetadata.xml",
    "Issuer": "https://cddisk-ldp.devr7.ru/saml2/Metadata",
    "SignatureAlgorithm": "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256",
    "SigningCertificateFile": "devr7.ru.pfx",
    "SigningCertificatePassword": "",
    "CertificateValidationMode": "None",
    "RevocationMode": "NoCheck"
 
  }
}
  • В блоке «Saml2» редактируем:
    • IdPMetadata — указываем ссылку на конфигурацию IdP сервера (шаг 1.1)
    • Issuer — редактируем ссылку на метаданные SP сервера по следующей схеме («https://{r7disk-domain}/saml2/Metadata»)
    • SigningCertificateFile — указываем имя .pfx сертификата для подписи сообщений
    • SigningCertificatePassword — указываем пароль на .pfx сертификат (если на сертификате установлен пароль)

Перезапустите службы командой:

supervisorctl restart all

3. Настройка AD FS IdP

3.1. Добавляем отношение доверия проверяющей стороны

  • В консоли Диспетчер сервера откройте Tools (Инструменты) -> AD FS Management (Управление AD FS),

Настройка SSO в связке Р7-Диск SP и AD FS IdP

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

  • Выберите опцию 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 (Далее),

Настройка SSO в связке Р7-Диск SP и AD FS IdP

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

3.2. Добавляем правила преобразования выдачи

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

3.2.1. Добавляем отправку атрибутов LDAP как утверждений

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

  • Напишите любое имя в поле Claim rule name (Имя правила утверждения). Выберите опцию Active Directory из списка Attribute store (Хранилище атрибутов) и заполните форму Mapping of LDAP attributes to outgoing claim types (Сопоставление атрибутов LDAP типам исходящих утверждений) согласно приведенной ниже таблице. Когда все будет готово, нажмите кнопку Finish (Завершить).

Настройка SSO в связке Р7-Диск SP и AD FS IdP

Где:

LDAP ATTRIBUTE (АТРИБУТ LDAP)OUTGOING CLAIM TYPE (ТИП ИСХОДЯЩЕГО УТВЕРЖДЕНИЯ)
Given-Namegivenname[0]
 Surnamesn
E-Mail-Addressesmail

 

3.2.2. Добавляем преобразование входящего утверждения

  • В окне Edit Claim Rules (Изменить правила утверждений) снова нажимите кнопку Add Rule… (Добавить правило…), выберите опцию Transform an Incoming Claim (Преобразование входящего утверждения) из списка Claim rule template (Шаблон правила утверждения) и нажмите кнопку Next (Далее),

Настройка SSO в связке Р7-Диск SP и AD FS IdP

  • Напишите любое имя в поле Claim rule name (Имя правила утверждения) и выберите следующие параметры из списков:

Настройка SSO в связке Р7-Диск SP и AD FS IdP

Где:

      • Incoming claim type (Тип входящего утверждения): mail,
      • Outgoing claim type (Тип исходящего утверждения): Name ID,
      • Outgoing name ID format (Формат ИД исходящего имени): Email
  • Когда все будет готово, нажмите кнопку Finish (Завершить).

3.2.3. Добавляем настраиваемое правило утверждения

  • Для корректной работы logout из AD FS, необходимо добавить Custom Claim Rule (настраиваемое правило утверждения), где {r7disk-domain} нужно заменить на домен своего Р7-Диска 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://{r7disk-domain}/sso/metadata");
  • Нажмите кнопку OK,

Настройка SSO в связке Р7-Диск SP и AD FS IdP

3.2.4. Проверяем вкладку правила преобразования выдачи

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

Настройка SSO в связке Р7-Диск SP и AD FS IdP

4. Проверка работы Р7-Диск SP и AD FS IdP

  • Вход в Р7-Диск на стороне SP
    • Перейдите на страницу аутентификации Р7-Диск (например, https://admin.devr7.ru/)
    • Нажмите на кнопку «Войти через ССО». Если этой кнопки нет, то SSO не включен.

Настройка SSO в связке Р7-Диск SP и AD FS IdP

  • Если всё настроено верно в SP и IdP, мы будем перенаправлены на форму логина в AD FS IdP.
    • Введите логин и пароль учетной записи в AD FS IdP и нажмите кнопку «Вход».

Настройка SSO в связке Р7-Диск SP и AD FS IdP

  • Если учетные данные указаны правильно, мы будем перенаправлены на страницу модуля Р7-Диск (пользователь должен быть синхронизирован по LDAP заранее, до настройки SSO).

Настройка SSO в связке Р7-Диск SP и AD FS IdP

Обратите внимание, что при внесении каких-либо изменений в разделе «Relying Party Trusts» в  AD FS обходимо выполнять обновление этих данных нажатием на «Update from Federation Metadata»

Настройка SSO в связке Р7-Диск SP и AD FS IdP

 

Была ли полезна статья?
Позвольте нам стать лучше