Настройка Shibboleth
В этом разделе
- Необходимая информация
Регистрация Shibboleth в качестве провайдера корпоративной идентификации в Portal for ArcGIS Регистрация Portal for ArcGIS в качестве проверенного провайдера сервиса в Shibboleth
Вы можете настроить Shibboleth 2.3.8 и более новые версии в качестве провайдера идентификации для корпоративных учетных записей в Portal for ArcGIS. Процесс настройки состоит из двух основных шагов: регистрации вашего провайдера идентификации в Portal for ArcGIS и регистрации Portal for ArcGIS в провайдере идентификации.
Вы также можете ввести в портал метаданные, относящиеся к корпоративным группам в вашем хранилище идентификаций. Это позволит создавать группы на портале, использующие имеющиеся корпоративные группы из хранилища идентификаций. Когда участники входят на портал, доступ к ресурсам, элементам и данным обеспечивается правилами, заданными в корпоративной группе. Если вы не предоставите необходимых метаданных о корпоративных группах, вы все равно сможете создавать группы. Однако правила участия будут определяться Portal for ArcGIS, а не хранилищем идентификаций.
Необходимая информация
Portal for ArcGIS должен получить определенную атрибутивную информацию от провайдера аутентификации, когда пользователь входит с использованием корпоративной учетной записи. NameID это обязательный атрибут, который должен отправляться провайдером аутентификации в SAML-ответе для интеграции с Portal for ArcGIS. При входе пользователя IDP в хранилище пользователей Portal for ArcGIS будет создан новый пользователь с именем NameID. Допустимыми символами значения, которое посылается атрибутом NameID, являются буквы, цифры и _ (нижнее подчеркивание), . (точка) и @ (собачка). Другие символы будут заменены нижним подчеркиванием в имени пользователя, созданном Portal for ArcGIS.
Portal for ArcGIS поддерживает поток атрибутов givenName и email address корпоративной учетной записи от корпоративного провайдера идентификации. Когда пользователь осуществляет вход с использованием корпоративной учетной записи, и Portal for ArcGIS получает атрибуты с именами givenname и email или mail (в любом регистре), Portal for ArcGIS заполняет полное имя и адрес электронной почты для учетной записи пользователя значениями, полученными от провайдера идентификации. Рекомендуем указывать email address от провайдера идентификации, чтобы пользователь мог получать уведомления.
Регистрация Shibboleth в качестве провайдера корпоративной идентификации в Portal for ArcGIS
- Войдите на веб-сайт портала в качестве администратора вашей организации и щелкните Моя Организация > Изменить настройки > Безопасность.
- В разделе Корпоративные учетные записи щелкните кнопку Установить провайдера идентификации и введите в открывшемся окне имя вашей организации (к примеру, City of Redlands). При входе пользователей на веб-сайт портала данный текст отображается внутри строки входа SAML (например, Использование учетной записи City of Redlands).
- Укажите, смогут ли пользователи вступать в организацию Автоматически или После добавления учетных записей в портал. Выбор первой опции позволяет пользователям входить в организацию с указанием корпоративной учетной записи без вмешательства администратора. Их учетные записи автоматически регистрируются в организации при первом входе. Во втором случае пользователям потребуется регистрация соответствующих учетных записей в организации, выполняемая администратором посредством специальной утилиты командной строки или скрипта Python. После регистрации учетных записей пользователи смогут входить в организацию.
Подсказка:
Рекомендуется назначить хотя бы одну корпоративную учетную запись в качестве администратора портала и отключить или удалить первичную учетную запись администратора. Также рекомендуется отключить кнопку Создать учетную запись и страницу настройки учетной записи (signup.html) на веб-сайте портала, чтобы пользователи не могли создавать собственные учетные записи. Подробные инструкции см. в разделе Настройка SAML-совместимого провайдера идентификации для работы с порталом.
- Введите метаданные для провайдера идентификации, используя один из двух приведенных ниже вариантов:
- Файл – по умолчанию, Shibboleth располагает файл метаданных IdP в SHIBBOLETH_HOME/metadata. Если файл метаданных доступен, выберите опцию Файл для метаданных провайдера идентификации и перейдите к файлу SHIBBOLETH_HOME/metadata/idp-metadata.xml.
- Параметры – выберите данную опцию, если файл недоступен. Вручную введите значения и укажите запрашиваемые параметры: URL для входа и сертификат. Для получения этих значений свяжитесь с администратором Shibboleth.
- Вы также можете ввести в портал метаданные, относящиеся к корпоративным группам в вашем хранилище идентификаций:
- Войдите в ArcGIS Portal Directory в качестве администратора вашей организации. URL-адрес имеет вид https://webadaptor.domain.com/arcgis/portaladmin.
- Щелкните Безопасность > Конфигурация > Обновить хранилище аутентификаций.
- Поместите информацию о конфигурации группы в формате JSON в текстовое поле Хранилище конфигурации группы (в формате JSON).
Скопируйте приведенный текст и измените его с учетом настроек вашего сайта:
{ "type": "LDAP", "properties": { "userPassword": "secret", "isPasswordEncrypted": "false", "user": "uid=admin\,ou=system", "ldapURLForUsers": "ldap://bar2:10389/ou=users\,ou=ags\,dc=example\,dc=com", "ldapURLForRoles": "ldap://bar2:10389/dc=example,dc=com", "usernameAttribute": "cn", "caseSensitive": "false", "userSearchAttribute": "cn", "memberAttributeInRoles": "member", "rolenameAttribute":"cn" } }
В большинстве случаев, вам будет необходимо изменить только значения для параметров user, userPassword и ldapURLForUsers. URL для вашего LDAP должен предоставляться администратором LDAP. Учетной записи, которую вы используете для параметров пользователя, необходимо иметь права доступа для просмотра названий групп в вашей организации. Несмотря на то, что вы вводите пароль в виде текста, он будет зашифрован при сохранении в директорию конфигурации портала и при просмотре.
Если ваш LDAP не чувствителен к регистру, установите для параметра caseSensitive значение "false".
- После того, как вы закончили вводить JSON для пользовательской конфигурации хранилища, щелкните Обновить конфигурацию для сохранения изменений и повторного запуска портала.
Регистрация Portal for ArcGIS в качестве проверенного провайдера сервиса в Shibboleth
- Настройка Portal for ArcGIS в качестве проверяющей стороны в Shibboleth.
- Получите файл метаданных вашей организации портала и сохраните его как XML-файл.
Для получения файла метаданных войдите в вашу организацию в качестве администратора и откройте страницу вашей организации. Щелкните кнопку Редактировать настройки, перейдите на закладку Безопасность и в разделе Корпоративные учетные записи нажмите кнопку Получить провайдера сервиса.
- Добавьте Portal for ArcGIS в качестве проверенного провайдера сервисов в Shibboleth посредством задания нового RelyingParty элемента в файле SHIBBOLETH_HOME/conf/relying-party.xml.
Добавьте этот код ниже в metadata:MetadataProvider. Предоставьте путь к XML-файлу метаданных вашей организации (сохраненному на шаге 1.a).
Примечание:
(Замените webadaptor.domain.com.arcgis на entityid из метаданных SAML вашего портала.)
<!-- Load metadata --> <MetadataProvider xsi:type="FilesystemMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata" id="webadaptor.domain.com.arcgis" metadataFile="<PATH_TO_THE_SAVED_METADATA>/citygismetadata.xml"> </MetadataProvider>
- Получите файл метаданных вашей организации портала и сохраните его как XML-файл.
- Настройте распознаватель атрибутов.
Portal for ArcGIS ожидает, что идентификатор имен SAML будет передаваться из IdP пользователю, пытающемуся войти на Portal for ArcGIS. Чтобы сделать эти данные доступными, требуется настроить распознаватель атрибутов Shibboleth, изменив файл SHIBBOLETH_HOME/conf/attribute-resolver.xml.
Следующее определение атрибута посылает основное имя пользователя, который был аутентифицирован Shibboleth IdP в идентификатор имени, в Portal for ArcGIS.
<!-- Name identifier for passing principal name to Portal for ArcGIS --> <resolver:AttributeDefinition id="principal" xsi:type="PrincipalName" xmlns="urn:mace:shibboleth:2.0:resolver:ad"> <resolver:AttributeEncoder xsi:type="SAML2StringNameID" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" /> </resolver:AttributeDefinition>
- Настройте фильтр атрибутов.
Настройте фильтр атрибутов Shibboleth на выпуск основного имени пользователя, закодированного как NameID, в Portal for ArcGIS после аутентификации пользователя. Значение параметра NameID будет использоваться как имя пользователя в организации.
Для добавления данного фильтра откройте файл SHIBBOLETH_HOME/conf/attribute-filter.xml и добавьте следующую политику фильтра атрибутов в XML-элемент AttributeFilterPolicyGroup.
Примечание:
(Замените webadaptor.domain.com.arcgis на entityid из метаданных SAML вашего портала.)
<!-- release the NameID to webadaptor.domain.com.arcgis --> <afp:AttributeFilterPolicy> <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="webadaptor.domain.com.arcgis" /> <afp:AttributeRule attributeID="principal"> <afp:PermitValueRule xsi:type="basic:ANY" /> </afp:AttributeRule> </afp:AttributeFilterPolicy>
Portal for ArcGIS поддерживает поток атрибутов givenName и email address корпоративной учетной записи от корпоративного провайдера идентификации. Когда пользователь осуществляет вход с использованием корпоративной учетной записи, и Portal for ArcGIS получает атрибуты с именами givenname и email или mail (любой вариант), Portal for ArcGIS заполняет полное имя и адрес электронной почты для учетной записи пользователя значениями, полученными от провайдера идентификации.
Рекомендуется, чтобы вы пропустили адрес электронной почты от провайдера идентификации в Portal for ArcGIS. Это помогает, если пользователь в дальнейшем становится администратором. Наличие адреса электронной почты для учетной записи дает пользователю возможность получать уведомления о любой административной деятельности и отправлять приглашения другим пользователям о присоединении к организации.
- Настройте источник аутентификации.
Настройте источник аутентификации, используемый SimpleSAMLphp IdP. На следующем примере показано, как настроить Apache Directory Server в качестве хранилища пользователя на работу с Shibboleth с помощью файла SHIBBOLETH_HOME/conf/login.config.
ShibUserPassAuth { edu.vt.middleware.ldap.jaas.LdapLoginModule required ldapUrl="ldap://host:port" baseDn="ou=users,ou=system" ssl="true" serviceUser="uid=admin,ou=system" serviceCredential="secret" subtreeSearch="true" userField="uid" userFilter="uid={0}"; };
- Настроить обработчик учетных записей.
Включите обработчик учетных записей UsernamePassword в Shibboleth. С использованием обработчика учетных записей пользователи могут входить с именем пользователя и паролем из источника аутентификации, настроенного в предыдущем шаге.
Для настройки обработчика учетных записей откройте файл SHIBBOLETH_HOME/conf/handler.xml и удалите комментирование строк обработчика учетных записей имени пользователя и пароля. (Замените <SHIBBOLETH_HOME> на путь к инсталляции Shibboleth.)
<!-- Username/password login handler --> <ph:LoginHandler xsi:type="ph:UsernamePassword" jaasConfigurationLocation="file://<SHIBBOLETH_HOME>/conf/login.config"> <ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</ph:AuthenticationMethod> </ph:LoginHandler>
- Отключите шифрование утверждений в Shibboleth IdP.
Portal for ArcGIS не поддерживает зашифрованные утверждения SAML от провайдеров идентификации, поэтому, вам следует выключить шифрование утверждений в Shibboleth. Чтобы выключить шифрование утверждений, откройте файл SHIBBOLETH_HOME/conf/relying-party.xml и найдите раздел "saml: SAML2SSOProfile" внутри элемента. В этом разделе измените значение encryptAssertions на never.
<rp:DefaultRelyingParty provider="https://grid3.esri.com/idp/shibboleth" defaultSigningCredentialRef="IdPCredential"> ... <rp:ProfileConfiguration xsi:type="saml:SAML2SSOProfile" includeAttributeStatement="true" assertionLifetime="PT5M" assertionProxyCount="0" signResponses="never" signAssertions="always" encryptAssertions="never" encryptNameIds="never" includeConditionsNotBefore="true"/> ... </rp:DefaultRelyingParty>
- Перезапустите веб-сервер, на котором размещено веб-приложение Shibboleth.