Вы можете настроить SimpleSAMLphp 1.10 и более новой версии в качестве провайдера идентификации (IDP) для корпоративных учетных записей в Portal for ArcGIS. Процесс настройки состоит из двух основных шагов: регистрации вашего корпоративного IDP в Portal for ArcGIS и регистрации Portal for ArcGIS в корпоративном IDP.
Необходимая информация
Portal for ArcGIS должен получить определенную атрибутивную информацию от IDP, когда пользователь входит с использованием учетных записей SAML. Атрибут NameID является обязательным и должен отправляться IDP в ответ на запрос SAML для интеграции работы с Portal for ArcGIS. Так как Portal for ArcGIS использует значение NameID для уникальной идентификации именованного пользователя, рекомендуется для идентификации пользователя использовать постоянное значение. Когда пользователь из IDP осуществляет вход, Portal for ArcGIS создает нового пользователя с именем NameID в хранилище пользователей. Допустимыми символами значения, которое посылается атрибутом NameID, являются буквы, цифры, _ (нижнее подчеркивание), . (точка) и @ (знак). Другие символы будут заменены нижним подчеркиванием в имени пользователя, созданном Portal for ArcGIS.
Portal for ArcGIS поддерживает получение email-адреса пользователя, информацию о его участии в группах, указанного имени и фамилии от поставщика удостоверений SAML.
Регистрация SimpleSAMLphp в качестве корпоративного IDP в Portal for ArcGIS
- Настройте источник аутентификации в IdP SimpleSAMLphp.
- Создайте источник аутентификации.
SimpleSAMLphp Поддерживает аутентификацию пользователей из различных источников: LDAP-сервер, пользователи SQL Server, домена Active Directory и т.п. В приведенном ниже примере показано, как следует настроить Apache Directory Server в качестве источника аутентификации в IdP SimpleSAMLphp.
Источники аутентификации могут быть сконфигурированы в файле <SimpleSAML_HOME>/config/authsources.php. Для настройки сервера LDAP откройте файл config/authsources.php и добавьте основанный на LDAP источник аутентификации в следующем формате:
'example-ldapApacheDS' => array( 'ldap:LDAP', /* The hostname of the LDAP server. */ 'hostname' => 'host:port', /* Whether TLS should be used when contacting the LDAP server. */ 'enable_tls' => TRUE, /* * Which attributes should be retrieved from the LDAP server. * This can be an array of attribute names, or NULL, in which case * all attributes are fetched. */ 'attributes' => NULL, /* * The pattern that should be used to create the users DN given the username. * %username% in this pattern will be replaced with the user's username. * * This option is not used if the search.enable option is set to TRUE. */ 'dnpattern' => 'uid=%username%,ou=users,ou=system', /* * As an alternative to specifying a pattern for the users DN, it is possible to * search for the username in a set of attributes. This is enabled by this option. */ 'search.enable' => FALSE, /* * The DN that will be used as a base for the search. * This can be a single string, in which case only that DN is searched, or an * array of strings, in which case they will be searched in the order given. */ 'search.base' => 'ou=users,ou=system', /* * The attribute(s) the username should match against. * * This is an array with one or more attribute names. Any of the attributes in * the array may match the value the username. */ 'search.attributes' => array('uid', 'mail'), /* * The username & password the simpleSAMLphp should bind to before searching. If * this is left as NULL, no bind will be performed before searching. */ 'search.username' => 'uid=admin,ou=system', 'search.password' => 'password', ),
- Настройте источник аутентификации, созданный вами выше, в качестве модуля аутентификации IdP SimpleSAMLphp. Откройте файл metadata/ saml20-idp-hosted.php и добавьте источник аутентификации для использования.
/* * Authentication source to use. Must be one that is configured in * 'config/authsources.php'. */ 'auth' => 'example-ldapApacheDS',
- Создайте источник аутентификации.
- Настройте формат идентификатора имени, поддерживаемый IDP SimpleSAMLphp. Откройте файл < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php и добавьте этот код ниже. В следующем примере uid будет передан как NameID IDP SimpleSAMLphp в Portal for ArcGIS после аутентификации пользователя.
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'authproc' => array( 3 => array( 'class' => 'saml:AttributeNameID', 'attribute' => 'uid', 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', ), ),
- Зарегистрируйте в качестве провайдера идентификации IDP SimpleSAMLphp для вашей организации Portal for ArcGIS.
- Убедитесь, что вы вошли в систему в качестве администратора вашей организации.
- Щелкните Организация вверху сайта, затем выберите вкладку Настройки.
- Щелкните Безопасность в левой части страницы.
- В разделе Учетные записи секции Корпоративная щелкните кнопку Задать корпоративную учетную запись и выберите опцию Один провайдер идентификации. На странице Задать свойства введите имя своей организации (например, City of Redlands). При входе пользователей на веб-сайт портала данный текст отображается внутри строки входа SAML (например, Использование учетной записи City of Redlands).
Примечание:
Вы можете зарегистрировать только один корпоративный IDP для портала.
- Укажите, могут ли пользователи вступать в организацию Автоматически или По приглашению администратора. Выбор первой опции позволяет пользователям входить в организацию с указанием корпоративной учётной записи без вмешательства администратора. Их учетные записи автоматически регистрируются в организации при первом входе. Во втором случае пользователям потребуется регистрация соответствующих учетных записей в организации, выполняемая администратором посредством специальной утилиты командной строки или скрипта Python. После регистрации учетных записей пользователи смогут входить в организацию.
Подсказка:
Рекомендуется назначить хотя бы одну корпоративную учетную запись в качестве администратора портала и отключить или удалить учетную запись основного администратора. Также рекомендуется отключить кнопку Создать учетную запись на веб-сайте портала, чтобы пользователи не могли создавать собственные учетные записи. Подробные инструкции см. в разделе Настройка SAML-совместимого провайдера идентификации для работы с порталом.
- Введите метаданные для IDP, используя один из трех приведенных ниже вариантов:
URL – выберите данную опцию, если доступен URL-адрес метаданных SimpleSAMLphp . Обычно это https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.
Примечание:
Если ваш корпоративный IDP имеет самозаверенный сертификат, возникнет ошибка при попытке указать URL по протоколу HTTPS для метаданных. Ошибка возникнет из-за того, что Portal for ArcGIS не сможет проверить самозаверенный сертификат IDP. Либо используйте в URL протокол HTTP, используйте одну из опций, указанных ниже, или настройте IDP на работу с доверенным сертификатом.
Файл – выберите данную опцию, если URL-адрес недоступен. Сохраните метаданные из URL-адреса как XML-файл, и выгрузите файл в Portal for ArcGIS с помощью опции Файл.
Указанные здесь параметры – выберите данную опцию, если недоступны URL-адрес или файл метаданных. Вручную введите значения и укажите запрашиваемые параметры: URL для входа и сертификат, закодированный в формате BASE 64. Для получения этих значений свяжитесь с администратором SimpleSAMLphp.
- Доступна расширенная настройка дополнительных опций:
- Шифровать утверждения – включите эту опцию, если SimpleSAMLphp будет настроен на шифрование ответов утверждений SAML.
- Включить подписанный запрос – Выберите эту опцию, чтобы заставить Portal for ArcGIS подписывать запрос аутентификации SAML, который отправляется на SimpleSAMLphp.
- ID объекта – Обновите это значение, чтобы использовать новый ID объекта, чтобы уникально идентифицировать ваш портал в SimpleSAMLphp.
- Произвести выход в провайдер идентификации – включите эту опцию, чтобы Portal for ArcGIS использовал URL-адрес выхода, чтобы выполнить выход пользователя из SimpleSAMLphp. Введите используемый URL в поле URL-адрес выхода. Если IDP для выполнения входа требуется URL-адрес выхода, необходимо включить опцию Включить подписанный запрос.
- Обновить профиль для входа — Включите эту опцию, чтобы ArcGIS Enterprise обновил пользовательские атрибуты givenName и email address, если они с момента их последнего входа изменились.
- Включить членство в группе, основанное на SAML—включите эту опцию, чтобы позволить пользователям организации связать заданные корпоративные группы, основанные на SAML, с группами ArcGIS Enterprise во время процесса создания групп.
- URL-адрес выхода – URL-адрес IDP, использующегося при выходе работающего в данный момент пользователя. Обычно URL-адрес выхода выглядит так: https://idphost.domain.com/simplesaml/saml2/idp/SingleLogoutService.php. Этот URL-адрес задан в элементе SingleLogoutService в файле метаданных IDP. Обычно URL файла метаданных URL – это http://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.
Для параметров Шифровать утверждения и Включить подписанный запрос используется сертификат samlcert из хранилища ключей портала. Чтобы воспользоваться новым сертификатом, удалите сертификат samlcert, создайте новый с тем же псевдонимом (samlcert), следуя шагам в разделе Импорт сертификата на портал, и перезапустите портал.
- Щелкните Сохранить.
Регистрация Portal for ArcGIS в качестве проверенного провайдера сервиса в SimpleSAMLphp
- Настройте Portal for ArcGIS в качестве проверенного провайдера сервисов с SimpleSAMLphp посредством настройки файла <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php.
- Получите файл метаданных XML для вашей организации Portal for ArcGIS.
Для получения файла метаданных войдите в вашу организацию в качестве администратора и откройте страницу вашей организации. Щелкните вкладку Настройки, затем Безопасность в левой части страницы. В разделе Учетные записи, секции Корпоративные, щелкните кнопку Загрузить метаданные провайдера сервиса.
- Конвертируйте XML-файл, который вы получили в предыдущем шаге, в формат PHP.
SimpleSAMLphp предполагает, что метаданные провайдера сервисов будут предоставлены в формате PHP. SimpleSAMLphp встроенный конвертер XML метаданных в PHP, который по умолчанию доступен как https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php в вашей инсталляции SimpleSAMLphp. Используйте данный конвертер для конвертирования XML в PHP.
- Откройте файл metatadata/saml20-sp-remote.php и добавьте конфигурацию провайдера сервисов в формате PHP, созданную в шаге 1.b ранее.
Ниже представлен пример добавления конфигурации провайдера сервисов в файл метаданных.
/* The following is a Portal for ArcGIS organization service provider */ $metadata['webadaptorhost.domain.com.webadaptorname'] = array ( 'entityid' => ' webadaptorhost.domain.com.webadaptorname', 'name' => array ( 'en' => 'portal ', ), 'description' => array ( 'en' => 'portal ', ), 'OrganizationName' => array ( 'en' => 'portal ', ), 'OrganizationDisplayName' => array ( 'en' => 'portal ', ), 'url' => array ( 'en' => 'https://webadaptorhost.domain.com/webadaptorname', ), 'OrganizationURL' => array ( 'en' => 'https://webadaptorhost.domain.com/webadaptorname', ), 'contacts' => array ( ), 'metadata-set' => 'saml20-sp-remote', 'AssertionConsumerService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin', 'index' => 1, ), 1 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://webadaptorhost.domain.com/webadaptorname/sharing/rest/oauth2/saml/signin', 'index' => 2, ), ), 'SingleLogoutService' => array ( ), );
- Получите файл метаданных XML для вашей организации Portal for ArcGIS.
- Настройте атрибут, который должен быть передан как NameID в Portal for ArcGIS из IdP SimpleSAMLphp после аутентификации пользователя. Чтобы сделать это, добавьте атрибут в конце конфигурации провайдера сервисов, которую вы добавили в предыдущем шаге.
В следующем примере uid передается как NameID IdP SimpleSAMLphp в Portal for ArcGIS после аутентификации пользователя. (Замените webadaptorhost.domain.com.webadaptorname на URL-адрес вашего портала.)
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid', /* The following indicates whether or not to send all the attributes received from the authentication source to the service provider. If true, it will send, otherwise it will not send all the attributes*/ 'simplesaml.attributes' => true, );
- Если выбрана дополнительная настройка Шифровать утверждения при регистрации в качестве поставщика корпоративной идентификации IDP SimpleSAMLphp, добавьте атрибут ниже в конце настройки, которая была добавлена в шаге 1.
/* Whether assertions sent to this SP should be encrypted. The default value is FALSE. */ 'assertion.encryption' => true, );