Настройка SimpleSAMLphp

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

Примечание:

Чтобы гарантировать защищенные настройки учетных записей SAML см. рекомендации по безопасности SAML.

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

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

ArcGIS Enterprise поддерживает получение email-адреса пользователя, информацию о его участии в группах, указанного имени и фамилии от поставщика удостоверений SAML.

Регистрация SimpleSAMLphp в качестве SAML IDP в ArcGIS Enterprise

  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 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',
      	),
      
    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 в ArcGIS Enterprise после аутентификации пользователя.
    '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 для вашей организации ArcGIS Enterprise.
    1. Убедитесь, что вы вошли в систему в качестве администратора вашей организации.
    2. Щелкните Организация вверху сайта, затем выберите вкладку Настройки.
    3. Щелкните Безопасность в левой части страницы.
    4. В разделе Учетные записи щелкните кнопку Новая учетная запись SAML и выберите опцию Один провайдер аутентификаций. На странице Задать свойства введите имя своей организации (например, City of Redlands). При входе пользователя на портал веб-сайта данный текст отображается внутри строки входа SAML (например, Использование учетной записи City of Redlands).
      Примечание:

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

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

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

    6. Введите метаданные для IDP, используя один из трех приведенных ниже вариантов:

      URL—выберите данную опцию, если доступен URL-адрес метаданных SimpleSAMLphp. Обычно это https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php.

      Примечание:

      Если ваш SAML IDP имеет самозаверенный сертификат, возникнет ошибка при попытке указать URL по протоколу HTTPS для метаданных. Ошибка возникнет из-за того, что ArcGIS Enterprise не сможет проверить самозаверенный сертификат IDP. Либо используйте в URL протокол HTTP, используйте одну из опций, указанных ниже, или настройте IDP на работу с доверенным сертификатом.

      Файл – выберите данную опцию, если URL-адрес недоступен. Сохраните метаданные из URL-адреса как XML-файл, и выгрузите файл в ArcGIS Enterprise с помощью опции Файл.

      Указанные здесь параметры – выберите данную опцию, если недоступны URL-адрес или файл метаданных. Вручную введите значения и укажите запрашиваемые параметры: URL для входа и сертификат, закодированный в формате BASE 64. Для получения этих значений свяжитесь с администратором SimpleSAMLphp.

  4. Настройте дополнительные параметры по мере необходимости:
    • Шифровать утверждения—включите эту опцию, если SimpleSAMLphp будет настроен на шифрование ответов утверждений SAML.
    • Включить запрос с входом—Включите эту опцию для входа в ArcGIS Enterprise в запросе аутентификации SAML, отправляемом в SimpleSAMLphp.
    • ID объекта – Обновите это значение, чтобы использовать новый ID объекта, чтобы уникально идентифицировать ваш портал в SimpleSAMLphp.
    • Произвести выход из провайдера идентификации – включите эту опцию, чтобы ArcGIS Enterprise использовал 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 – это https://[simpleSAML-server]/simplesaml/saml2/idp/metadata.php.

    Для параметров Шифровать утверждения и Включить подписанный запрос используется сертификат samlcert из хранилища ключей портала. Чтобы воспользоваться новым сертификатом, удалите сертификат samlcert, создайте новый с тем же псевдонимом (samlcert), следуя шагам в разделе Импорт сертификата на портал, и перезапустите портал.

  5. Щелкните Сохранить.

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

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

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

    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 an ArcGIS Enterprise 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 в ArcGIS Enterprise из SimpleSAMLphp IdP после аутентификации пользователя. Чтобы сделать это, добавьте атрибут в конце конфигурации провайдера сервисов, которую вы добавили в предыдущем шаге.

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