Единая авторизация SAML в Drupal с использованием SimpleSAMLphp в качестве поставщика идентификации.
Обзор
Интеграция Drupal с SAML с использованием модуль miniOrange SAML SP Этот модуль обеспечивает бесшовную единую авторизацию (SSO) между SimpleSAMLphp и сайтом Drupal. Пользователи смогут входить на сайт Drupal, используя свои учетные данные SimpleSAMLphp. В этом документе описаны шаги по настройке единой авторизации (SSO) между Drupal как поставщиком услуг (SP) и SimpleSAMLphp как поставщиком идентификации (IdP). Модуль совместим с Drupal 7, Drupal 8, Drupal 9, Drupal 10 и Drupal 11.
Процедура установки
- Использование Композитора
- Использование Drush
- Ручная установка
Шаги настройки
Метаданные Drupal SAML SP
- Перейдите на Конфигурация → Люди → Настройка входа в систему SAML в АДМИНИСТРАЦИЯ меню. (/admin/config/people/miniorange_saml/idp_setup)
- На вкладке «Метаданные поставщика услуг» скопируйте следующее: Идентификатор организации/эмитента SP и URL SP ACS и держите их под рукой. Эти метаданные SP необходимы для настройки SimpleSAMLphp в качестве поставщика идентификационных данных (IdP).
Настройте SimpleSAMLphp в качестве поставщика идентификации.
-
Откройте из каталога установки SimpleSAML конфигурация/config.php и отредактируйте следующее:
'enable.saml20-idp' ⇒ true
- Включите Аутентификация пользователя/пароля модуль (входит в exampleauth). Это делается путем создания файла с именем включить (имя файла) в modules/exampleauth/.
-
Создайте источник аутентификации в config/authsources.phpФайл должен содержать одну запись, см. ниже:
'__DEFAULT__', /* * Закрытый ключ и сертификат для подписи ответов. * Они хранятся в каталоге сертификатов. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * Источник аутентификации, который должен использоваться для аутентификации * пользователя. Он должен совпадать с одной из записей в файле config/authsources.php. */ 'auth' => '' Пример: - 'example-userpass', // Вы можете найти это на шаге 3 ];
Данная конфигурация создает двух пользователей — студента и сотрудника — с паролями studentpass и employeepass. Имя пользователя и пароль хранятся в массиве index (student:studentpass для пользователя-студента). Атрибуты для каждого пользователя настраиваются в массиве, на который ссылается индекс. Таким образом, для пользователя-студента это:
[ 'uid' => ['student'], 'eduPersonAffiliation' => ['member', 'student'], ],
Атрибуты будут возвращены поставщиком идентификации (IdP) при входе пользователя в систему.
- Создайте самоподписанный сертификат, используя один из следующих методов:
-
Использование команды openssl
openssl req -newkey rsa:3072 -new -x509 -days 3652 -nodes -out example.org.crt -keyout example.org.pem
-
Сгенерируйте его с помощью любого онлайн-инструмента и добавьте в каталог сертификатов.
Расширение должно выглядеть примерно так.example.org.crt //(Открытый ключ) example.org.pem //(Закрытый ключ)
-
Примечание: SimpleSAMLphp работает только с сертификатами RSA. Сертификаты DSA не поддерживаются.
-
Настройка поставщика идентификации SAML 2.0 осуществляется на основе метаданных, хранящихся в metadata/saml20-idp-hosted.phpЭто минимальная конфигурация:
'__DEFAULT__', /* * Закрытый ключ и сертификат для подписи ответов. * Они хранятся в каталоге сертификатов. */ 'privatekey' => 'example.org.pem', 'certificate' => 'example.org.crt', /* * Источник аутентификации, который должен использоваться для аутентификации * пользователя. Он должен совпадать с одной из записей в config/authsources.php. */ 'auth' => '' Пример: - 'example-userpass', // Вы можете найти это на шаге 3 ];
-
Настраиваемый вами поставщик идентификации должен знать о поставщиках услуг, к которым вы собираетесь его подключить. Это настраивается с помощью метаданных, хранящихся в файле metadata/saml20-sp-remote.php. Вот минимальный пример файла метаданных metadata/saml20-sp-remote.php для поставщика услуг SimpleSAMLphp: (Замените) example.com с вашим Доменное имя Drupal.)
'https://example.com/samlassertion', 'SingleLogoutService' => 'https://example.com/user/logout', 'NameIDFormat' => 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress', 'simplesaml.nameidattribute' => 'mail', 'simplesaml.attributes' => true, 'attributes' => array('mail', 'givenname', 'sn', 'memberOf'), ];
Примечание: Следует учитывать, что URI в идентификаторе сущности и URL-адреса конечных точек AssertionConsumerService и Single Logout Service различаются у разных поставщиков услуг. Если у вас есть метаданные удаленного поставщика услуг в виде XML-файла, вы можете использовать встроенный конвертер метаданных XML в SimpleSAMLphp, который по умолчанию доступен по адресу /admin/metadata-converter.php в вашей установке SimpleSAMLphp.
- Перейдите на главную страницу установки SimpleSAMLphp. (URL-адрес установки может быть, например, таким: [URL-адрес установки]) https://service.example.com/simplesaml/ (где service.example.com необходимо заменить путем к вашему файлу SimpleSAMLphp.)
- Перейдите на вкладку «Федерация» и нажмите на Показать метаданные(Эти метаданные поставщика идентификации потребуются для настройки Drupal в качестве поставщика услуг.)
Настройте Drupal в качестве поставщика услуг SAML:
- Перейдите на свой сайт Drupal. Перейдите по ссылке... Настройка поставщика услуг во вкладке модуля нажмите на Загрузка метаданных IDP.
- Загрузите ранее скачанный файл метаданных из SimpleSAML в Загрузить файл метаданных текстовое поле и нажмите на Загрузить файл .
Примечание: Для обновления имени поставщика удостоверений выполните следующие действия:
- Под Экшн, выберите Редактировать.
- Введите SimpleSAMLphp в Имя поставщика удостоверений текстовое поле.
- Прокрутите вниз и нажмите Сохранить конфигурацию .
- Нажмите на ссылку «Тест», чтобы проверить соединение между Drupal и SimpleSAMLphp.
- Во всплывающем окне «Тестовая конфигурация» войдите в систему, используя учетные данные SimpleSAMLphp (если активная сессия отсутствует). После успешной аутентификации отобразится список атрибутов, полученных от SimpleSAMLphp. Нажмите на Готово.
Поздравляем! Вы успешно настроили SimpleSAMLphp в качестве поставщика идентификации SAML (IdP) и Drupal в качестве поставщика услуг SAML.
Как работает вход через SAML SSO?
- Откройте новое окно браузера/приватного режима и перейдите на страницу входа на сайт Drupal.
- Нажмите Вход с использованием поставщика идентификации (SimpleSAMLphp) ссылку.
- Вы будете перенаправлены на страницу входа в SimpleSAMLphp. Введите учетные данные SimpleSAMLphp. После успешной аутентификации пользователь будет перенаправлен обратно на сайт Drupal.
Спасибо за ваш ответ. Мы свяжемся с вами в ближайшее время.
Что-то пошло не так. Пожалуйста, отправьте запрос ещё раз.

Свяжитесь с нами