Skip To Content

Настройка SimpleSAMLphp

Вы можете настроить SimpleSAMLphp версии 1.10 и выше в качестве провайдера идентификации (IDP) для корпоративных учетных записей в Portal for ArcGIS. Процесс настройки состоит из двух основных шагов: регистрации вашего корпоративного IDP в Portal for ArcGIS и регистрации Portal for ArcGIS в корпоративном IDP.

Необходимая информация

Portal for ArcGIS должен получить определенную атрибутивную информацию от IDP, когда пользователь входит с использованием корпоративной учетной записи. Атрибут NameID является обязательным и должен отправляться IDP в ответ на запрос SAML для интеграции с Portal for ArcGIS. Поскольку Portal for ArcGIS использует значение NameID для уникальной идентификации именованного пользователя, рекомендуется выбрать постоянное значение, уникально определяющее пользователя. Если входит пользователь IDP, новый пользователь с именем NameID будет создан Portal for ArcGIS в хранилище пользователей. Допустимыми символами значения, которое посылается атрибутом NameID, являются буквы, цифры и _ (нижнее подчеркивание). (точка) и @ (собачка). Другие символы будут заменены нижним подчёркиванием в имени пользователя, созданном Portal for ArcGIS.

Portal for ArcGIS поддерживает поток атрибутов givenName и email address корпоративной учетной записи от корпоративного IDP. Когда пользователь осуществляет вход с использованием корпоративной учетной записи, и Portal for ArcGIS получает атрибуты с именами givenname и email или mail (в любом случае), Portal for ArcGIS заполняет полное имя и адрес электронной почты для учетной записи пользователя значениями, полученными от IDP. Рекомендуем указывать email address от корпоративного IDP, чтобы пользователь мог получать уведомления.

Регистрация SimpleSAMLphp в качестве провайдера корпоративной идентификации IDP в Portal for ArcGIS

  1. Настройте источник аутентификации в SimpleSAMLphp IdP.
    1. Создайте источник аутентификации.

      SimpleSAMLphp поддерживает аутентификацию пользователей из различных источников: LDAP-сервер, пользователи SQL Server, домена Active Directory и т.п. В приведенном ниже примере показано, как следует настроить Apache Directory Server в качестве источника аутентификации в SimpleSAMLphp IdP.

      Источники аутентификации могут быть сконфигурированы в файле <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 SSL/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',
      	),

      Portal for ArcGIS поддерживает поток атрибутов givenName и email address корпоративной учетной записи от корпоративного IDP. Когда пользователь осуществляет вход с использованием корпоративной учетной записи, и Portal for ArcGIS получает атрибуты с именами givenname и email или mail (в любом регистре), Portal for ArcGIS заполняет полное имя и адрес электронной почты для учетной записи пользователя значениями, полученными от IDP.

      Рекомендуется, чтобы вы пропустили адрес электронной почты от корпоративного IDP в Portal for ArcGIS. Это помогает, если пользователь в дальнейшем становится администратором. Наличие адреса электронной почты для учётной записи даёт пользователю возможность получать уведомления о любой административной деятельности и отправлять приглашения другим пользователям для присоединения к организации.

    2. Настройте источник аутентификации, созданный вами выше, в качестве модуля аутентификации в SimpleSAMLphp IdP. Откройте файл metadata/ saml20-idp-hosted.php и добавьте источник аутентификации для использования.
      /*
      	 * Authentication source to use. Must be one that is configured in	 * 'config/authsources.php'.	 */
      	'auth' => 'example-ldapApacheDS',
  2. Настройте формат идентификатора имени, поддерживаемый SimpleSAMLphp IDP. Откройте файл < SimpleSAML_HOME >/metadata/saml20-idp-hosted.php и добавьте этот код ниже. В следующем примере uid будет пропущен как NameID через SimpleSAMLphp IDP в 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',				  ),
    			),
  3. Зарегистрируйте SimpleSAMLphp в качестве провайдера идентификации IDP для вашей организации Portal for ArcGIS.
    1. Войдите на веб-сайт портала в качестве администратора вашей организации и щелкните Организация > Изменить настройки > Безопасность.
    2. В разделе Корпоративные учетные записи выберите опцию Один провайдер идентификации, щелкните кнопку Установка входа в систему и в появившемся окне введите имя своей организации (например, City of Redlands). При входе пользователей на веб-сайт портала данный текст отображается внутри строки входа SAML (например, Использование учетной записи City of Redlands).
      Примечание:

      Вы можете зарегистрировать только один корпоративный IDP или одну интеграцию IDP для своего портала.

    3. Укажите, смогут ли пользователи вступать в организацию Автоматически или После добавления учётных записей в портал. Выбор первой опции позволяет пользователям входить в организацию с указанием корпоративной учётной записи без вмешательства администратора. Их учетные записи автоматически регистрируются в организации при первом входе. Во втором случае пользователям потребуется регистрация соответствующих учетных записей в организации, выполняемая администратором посредством специальной утилиты командной строки или скрипта Python. После регистрации учетных записей пользователи смогут входить в организацию.
      Подсказка:

      Рекомендуется назначить хотя бы одну корпоративную учетную запись в качестве администратора портала и отключить или удалить учетную запись основного администратора. Также рекомендуется отключить кнопку Создать учетную запись и страницу настройки учетной записи (signup.html) на веб-сайте портала, чтобы пользователи не могли создавать собственные учетные записи. Подробные инструкции см. в разделе Настройка SAML-совместимого провайдера идентификации для работы с порталом.

    4. Введите метаданные для 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.

  4. Доступна расширенная настройка дополнительных опций:
    • Шифровать утверждения – Выберите эту опцию для шифровки ответов утверждений SAML, если настроен SimpleSAMLphp.
    • Включить подписанный запрос – Выберите эту опцию, чтобы заставить Portal for ArcGIS подписывать запрос аутентификации SAML, который отправляется на SimpleSAMLphp.
    • ID объекта – Обновите это значение, чтобы использовать новый ID объекта, чтобы уникально идентифицировать ваш портал в SimpleSAMLphp.
    • Произвести выход в провайдер аутентификации – выберите эту опцию, чтобы заставить Portal for ArcGIS использовать URL-адрес выхода для выхода пользователя из SimpleSAMLphp. Введите используемый URL в поле URL-адрес выхода. Если IDP для выполнения входа требуется URL-адрес выхода, необходимо включить опцию Включить подписанный запрос.
    • Обновить профиль для входа – выберите эту опцию для обновления в Portal for ArcGIS пользовательских атрибутов givenName и email address, если они с момента их последнего входа изменились.
    • Включить членство в группе, основанное на SAML - выберите эту опцию, чтобы позволить пользователям организации связать основанные на SAML группы с группами Portal for ArcGIS в процессе создания группы.
    • 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

  1. Настройте Portal for ArcGIS в качестве проверенного провайдера сервисов с SimpleSAMLphp посредством настройки файла <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php.
    1. Получите файл метаданных XML для вашей организации Portal for ArcGIS.

      Для получения файла метаданных войдите в вашу организацию в качестве администратора и откройте страницу вашей организации. Щелкните кнопку Редактировать настройки, перейдите на вкладку Безопасность, и в разделе Корпоративные учетные записи щелкните кнопку Получить провайдера сервиса.

    2. Конвертируйте XML-файл, который вы получили в предыдущем шаге, в формат PHP.

      SimpleSAMLphp ожидает, что метаданные провайдера сервисов будут предоставлены в формате PHP. SimpleSAMLphp обеспечивает встроенный конвертер XML метаданных в PHP, который по умолчанию доступен как https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php в вашей инсталляции simpleSAMLphp. Используйте данный конвертер для конвертирования XML в PHP.

    3. Откройте файл 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 (  ),
      );
  2. Настройте атрибут, который должен быть пропущен как NameID в Portal for ArcGIS из SimpleSAMLphp IdP после аутентификации пользователя. Чтобы сделать это, добавьте атрибут в конце конфигурации провайдера сервисов, которую вы добавили в предыдущем шаге.

    В следующем примере uid пропущен как NameID через SimpleSAMLphp IdP в 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,
    );
  3. Если выбрана дополнительная настройка Шифровать утверждения при регистрации SimpleSAMLphp в качестве поставщика корпоративной идентификации IDP, добавьте атрибут ниже в конце настройки, которая была добавлена в шаге 1.
    /*
      Whether assertions sent to this SP should be encrypted. The default value is FALSE.  */
      'assertion.encryption' => true,
    );