Note
SCIM для GitHub Enterprise Server в настоящее время находится в beta и подлежит изменению. GitHub рекомендует сначала тестировать с помощью промежуточный экземпляр. См. раздел "Настройка промежуточного экземпляра".
При использовании идентификатор для IAM на GitHub Enterprise Server, SAML SSO управляет и защищает доступ к корпоративным ресурсам, таким как репозитории, проблемы и запросы на вытягивание. SCIM автоматически создает учетные записи пользователей и управляет доступом к вашей организации при внесении изменений в поставщика удостоверений. Вы также можете синхронизировать команды на GitHub с группами в вашем idP. Дополнительные сведения см. в разделе "О user provisioning with SCIM on GitHub Enterprise Server".
Обзор
Это руководство поможет вам настроить проверку подлинности SAML и подготовку SCIM для GitHub в PingFederate.
Перед началом работы обратите внимание на следующее:
- Использование PingFederate в качестве поставщика удостоверений для GitHub Enterprise Server находится в beta. Обратитесь в свою группу учетных записей, чтобы предоставить отзыв.
- Это руководство основано на PingFederate версии 12.1. Инструкции могут отличаться для других версий.
- В этом руководстве приведены минимальные шаги по настройке рабочей установки. Так как каталог удостоверений может быть подключен к PingFederate по-другому, вам потребуется выбрать правильные атрибуты данных для SAML и SCIM на основе того, что доступно из резервного хранилища данных.
Необходимые компоненты
Общие предварительные требования для использования SCIM для GitHub Enterprise Server применяются. См. раздел "Предварительные требования" в разделе "AUTOTITLE".
Дополнительно:
- Чтобы настроить SCIM, необходимо выполнить шаги 1–4 в autoTITLE.
- Вам потребуется personal access token (classic) для пользователя установки для проверки подлинности запросов из PingFederate.
- Необходимо установить соединитель EMU GitHub в PingFederate. Чтобы скачать и установить соединитель, см. статью "Установка подготовки " в документации по PingIdentity.
- Чтобы подготовить пользователей с помощью SCIM, необходимо использовать сервер LDAP в качестве резервного хранилища данных.
- Возможно, потребуется настроить брандмауэр в PingFederate, чтобы разрешить исходящие подключения к
https://HOSTNAME/api/v3/scim/v2
конечной точке в экземпляре GitHub Enterprise Server.{ % else %}конечные точки SCIM на GitHub:- Для GitHub.com:
https://api.github.com/scim/v2/enterprises/ENTERPRISE
- Для GHE.com:
https://api.SUBDOMAIN.ghe.com/scim/v2/enterprises/SUBDOMAIN
- Для GitHub.com:
- Для режима подготовки PingFederate должно быть задано значение, позволяющее подготовить SCIM. См. раздел "Перед началом работы" в руководстве по настройке параметров подготовки исходящего трафика в PingIdentity.
- Во время этой процедуры необходимо отправить сертификат X509 в PingFederate. Перед продолжением может потребоваться создать и сохранить сертификат. Вам также потребуется пароль запроса для сертификата. См. раздел "Пример создания сертификата X509" далее в этой статье.
1. Настройка SAML
В этом разделе описано, как создать соединитель SAML в PingFederate, настроить экземпляр адаптера ПОСТАВЩИКА удостоверений LDAP и управлять выходными данными SAML из адаптера idP.
- Создание адаптера SAML
- Настройка экземпляра адаптера поставщика удостоверений LDAP
- Управление выходными данными SAML из адаптера поставщика удостоверений
Прежде чем начать этот раздел, убедитесь, что вы выполнили шаги 1 и 2 в autoTITLE.
Создание адаптера SAML
-
Откройте административную консоль PingFederate.
-
Щелкните "Приложения" в заголовке, а затем нажмите кнопку "Sp Connections" на левой боковой панели.
-
Выберите шаблон для этого подключения, а затем в раскрывающемся списке "GitHub EMU Connector" (Соединитель EMU GitHub) в раскрывающемся списке "Шаблон подключения".
Note
Если этот параметр не отображается, соединитель EMU GitHub не установлен. Если вам нужна помощь, обратитесь к представителю Ping.
-
Чтобы заполнить некоторые поля в конфигурации PingFederate, вы отправите XML-файл, содержащий метаданные SAML для вашего предприятия.
- На новой вкладке войдите в GitHub в качестве встроенного пользователя установки.
Перейдите на страницу
https://HOSTNAME/saml/metadata
метаданных SAML. - Скачайте страницу в виде XML-файла.
- На новой вкладке войдите в GitHub в качестве встроенного пользователя установки.
Перейдите на страницу
-
На странице PingFederate "SP Connection" отправьте файл из предыдущего шага в качестве файла метаданных. Убедитесь, что вы сделаете это в течение 5 минут после скачивания файла.
-
Перейдите на вкладку "Тип подключения".
-
Выберите профили** единого входа в браузере и отмените **выделение исходящей подготовки (это будет включено позже).
-
Нажмите кнопку Далее.
-
На вкладке "Параметры подключения" убедитесь, что выбран только единый вход браузера.
-
Нажмите кнопку Далее.
-
На вкладке "Общие сведения" введите следующие сведения.
- "Идентификатор сущности партнера": ваш URL-адрес узла GitHub (
https://HOSTNAME.com
) - "Имя подключения": описательное имя для подключения sp в PingFederate
- "Базовый URL-адрес": url-адрес узла GitHub (
https://HOSTNAME.com
) - "Ведение журнала транзакций": стандартный
- Все остальные поля могут оставаться пустыми.
- "Идентификатор сущности партнера": ваш URL-адрес узла GitHub (
-
Нажмите кнопку Далее.
-
Нажмите кнопку "Настроить единый вход в браузер".
-
Нажмите кнопку "Настроить создание утверждения".
-
На вкладке "Сопоставление источника проверки подлинности" щелкните "Сопоставление нового адаптера".
-
На вкладке "Экземпляр адаптера" щелкните " Управление экземплярами адаптера".
-
Нажмите кнопку "Создать экземпляр".
Настройка экземпляра адаптера поставщика удостоверений LDAP
-
На странице "Создание экземпляра адаптера" на вкладке "Тип" введите следующие сведения.
- "Имя экземпляра": имя для идентификации экземпляра, например
pfghadapter
- "Идентификатор экземпляра": идентификатор для экземпляра, например
pfghadapter
- "Type": адаптер поставщика удостоверений формы HTML
- "Родительский экземпляр": нет
- "Имя экземпляра": имя для идентификации экземпляра, например
-
Нажмите кнопку Далее.
-
На вкладке "Адаптер поставщика удостоверений" в нижней части страницы щелкните " Управление проверятелями учетных данных паролей".
-
Нажмите кнопку "Создать экземпляр".
-
На вкладке "Тип" введите следующие сведения.
- "Имя экземпляра": имя для идентификации экземпляра, например
pfghdocscv
- "Идентификатор экземпляра": идентификатор для экземпляра, например
pfghdocscv
- "Type": проверка учетных данных пароля ldap
- "Родительский экземпляр": нет
- "Имя экземпляра": имя для идентификации экземпляра, например
-
Нажмите кнопку Далее.
-
На вкладке "Конфигурация экземпляра" щелкните " Управление хранилищами данных".
-
Нажмите кнопку "Добавить новое хранилище данных".
-
На вкладке "Тип хранилища данных" введите следующие сведения.
- "Имя экземпляра": любое уникальное значение, например
pfghdocsds
- "Type": Directory (LDAP)
- "Маскирование значений в журнале": отмена выбора
- "Имя экземпляра": любое уникальное значение, например
-
Нажмите кнопку Далее.
-
На вкладке "Конфигурация LDAP" настройте сведения о сервере LDAP.
-
Нажмите кнопку Проверить подключение. Должно появиться сообщение "Проверка подключения была успешной".
-
В нижней части страницы нажмите кнопку "Дополнительно".
-
Перейдите на вкладку "Двоичные атрибуты LDAP" и добавьте
guidAttribute
иobjectGUID
в качестве атрибутов. -
Нажмите кнопку Готово. Вы должны вернуться на вкладку "Конфигурация LDAP".
-
Нажмите кнопку "Далее **", а затем **нажмите кнопку "Сохранить".
-
На вкладке "Управление хранилищами данных" нажмите кнопку "Готово".
-
На вкладке "Конфигурация экземпляра" введите следующие сведения.
- "Хранилище данных LDAP": имя созданного выше хранилища данных
- "База поиска": расположение в каталоге, в котором должны начинаться поиски LDAP
- "Фильтр поиска": фильтр, который гарантирует, что имя пользователя вводится при входе в поле на сервере LDAP (например:
sAMAccountName=${username}
) - Область поиска: поддерев
- "Сопоставление с учетом регистра": выбрано
-
Нажмите кнопку "Далее", "Далее****", а затем " Сохранить".
Управление выходными данными SAML из адаптера поставщика удостоверений
-
На странице "Управление проверятелями учетных данных паролей" нажмите кнопку "Готово".
-
На вкладке "Адаптер поставщика удостоверений" введите следующие сведения.
- "Экземпляр проверяющего пароля": имя экземпляра проверяющего элемента, созданного выше (например
pfghdocscv
). Нажмите кнопку "Обновить", чтобы завершить выбор. - Все остальные поля можно оставить в качестве значений по умолчанию или изменить в соответствии с вашими требованиями.
- "Экземпляр проверяющего пароля": имя экземпляра проверяющего элемента, созданного выше (например
-
Нажмите кнопку **"Далее", а затем **еще раз.
-
На вкладке "Атрибуты адаптера" введите следующие сведения.
-
"Уникальный атрибут ключа пользователя":
username
-
Рядом с атрибутом
username
выберите "Псевдоним".
Note
Это важный шаг. Атрибут адаптера используется для уникальной идентификации пользователя на GitHub во время подготовки SCIM.
-
-
Нажмите кнопку **"Далее", а затем **еще раз.
-
Просмотрите параметры на странице сводки и нажмите кнопку "Сохранить".
-
На вкладке "Адаптеры idP" вы увидите только что созданный адаптер. Нажмите кнопку Готово.
-
На вкладке "Экземпляр адаптера" в раскрывающемся списке "Экземпляр адаптера" выберите только что созданный адаптер.
-
Нажмите кнопку Далее.
-
На вкладке "Метод сопоставления" выберите "Использовать только значения контракта адаптера" в утверждении SAML (другие варианты могут работать, но не были подтверждены).
-
Нажмите кнопку Далее.
-
На вкладке "Выполнение контракта атрибута" сопоставляйте
SAML_SUBJECT
значение "Адаптер" в качестве источника иusername
значения.Note
Это важный шаг. Нормализованное
SAML_SUBJECT
значение потребуется сопоставить нормализованные имена пользователей, подготовленных SCIM. -
Нажмите кнопку "Далее", "Далее**", **а затем "Готово".
-
На вкладке "Сопоставление источника проверки подлинности" необходимо вернуться, а в разделе "Имя экземпляра адаптера" должен быть только что созданный экземпляр адаптера.
-
Нажмите кнопку Далее.
-
На вкладке "Параметры протокола" нажмите кнопку "Настройка параметров протокола".
-
В поле "URL-адрес службы потребителей утверждений" добавьте строку со следующими сведениями:
- Выбрано значение по умолчанию
- "Index": 0
- "Привязка": POST
- "URL-адрес конечной точки":
HOSTNAME/saml/consume
-
Нажмите кнопку Далее.
-
На вкладке "Допустимые привязки SAML" убедитесь, что выбраны только "POST" и "REDIRECT".
-
Нажмите кнопку Далее.
-
На странице "Политика подписи" убедитесь, что выбран только параметр SIGN RESPONSE AS REQUIRED.
-
Нажмите кнопку Далее.
-
На вкладке "Политика шифрования" убедитесь, что выбран параметр NONE.
-
Нажмите кнопку Далее.
-
Нажмите кнопку Сохранить.
-
Нажимайте кнопку "Далее " и " Готово", пока не перейдете на вкладку "Учетные данные".
-
На вкладке "Учетные данные" нажмите кнопку "Настройка учетных данных", а затем нажмите кнопку "Управление сертификатами".
-
На странице "Управление сертификатами" нажмите кнопку "Импорт", а затем отправьте сертификат X509 (для справки см. раздел "Пример создания сертификата X509".
-
В поле "Пароль" используйте пароль вызова для сертификата.
-
Нажмите кнопку "Далее **", а затем **нажмите кнопку "Сохранить".
-
На вкладке "Управление сертификатами" вы увидите только что импортированный сертификат. Нажмите кнопку Готово.
-
На вкладке "Параметры цифровой подписи":
- Выберите сертификат, который вы только что создали для сертификата подписи.
- Вы можете оставить вторичный сертификат пустым, а флажок "Включить сертификат в подпись" не выбран.
- Алгоритм подписывания должен иметь значение RSA SHA256.
-
Нажмите кнопку "Далее", а затем "Готово" и " Далее".
-
На вкладке "Сводка" включите переключатель для конечной точки приложения единого входа.
-
Нажмите кнопку Сохранить. Вы должны вернуться к списку подключений sp, где должно появиться только что созданное подключение sp.
Сбор сведений о конфигурации SAML
Для настройки SAML на GitHubвам потребуются некоторые сведения из PingFederate.
- На странице "Подключения с пакетом обновления" в строке нового подключения нажмите кнопку "Выбрать действие", а затем экспорт метаданных.
- На вкладке "Подпись метаданных" в строке нового подключения выберите сертификат подписи, созданный выше. Чтобы скачать сертификат, нажмите кнопку "Далее", а затем нажмите кнопку "Экспорт".
- В PingFederate щелкните "Система " в заголовке, а затем "Сервер", а затем "Параметры протокола". Убедитесь, что
SAML 2.0 ENTITY ID
определен параметр. Запишите это, так как вам потребуется для поля "Издатель" в параметрах SAML GitHub. - Откройте скачанный файл метаданных и подготовьтесь к следующим шагам.
Настройка GitHub
-
Войдите в GitHub как пользователь с доступом к консоли управления.
-
Включите SAML в параметрах предприятия. См. "Настройка единого входа SAML для предприятия".
-
Введите следующие значения из файла метаданных SAML из предыдущего раздела.
- Для URL-адреса единого
<md: SingleSignOnService>
входа используйтеlocation
значение поля. Это должен быть конечный URL-адрес/idp/SSO.saml2
. - Для издателя используйте
entityId
значение<md: EntityDescriptor>
поля (URL-адрес).
- Для URL-адреса единого
-
Для сертификата проверки отправьте созданный ранее файл сертификата X509.
-
Нажмите кнопку Сохранить параметры.
2. Настройка SCIM
В этом разделе описана настройка параметров SCIM и сопоставления атрибутов в PingFederate.
Прежде чем начать этот раздел, убедитесь, что вы выполнили шаги 1–4 в autoTITLE.
Настройка параметров SCIM
-
Вернитесь на страницу "Подключения sp" в PingFederate и выберите созданное ранее соединение с пакетом поддержки.
-
Перейдите на вкладку "Тип подключения".
-
Выберите "Исходящая подготовка".
-
Убедитесь, что выбраны профили единого входа в браузере.
-
Нажмите кнопку "Далее ", пока не перейдете на вкладку "Исходящая подготовка", а затем нажмите кнопку "Настройка подготовки".
-
На вкладке "Целевой" введите следующие сведения.
- "Базовый URL-адрес":
https://HOSTNAME/api/v3/scim/v2
- "Маркер доступа": personal access token (classic), созданный для пользователя установки
- "Базовый URL-адрес":
-
Нажмите кнопку Далее.
-
На вкладке "Управление каналом" нажмите кнопку "Создать", а затем введите уникальное имя канала, например
pfghscim
. -
Нажмите кнопку Далее.
-
На вкладке "Источник" выберите хранилище данных, созданное ранее.
-
Нажмите кнопку Далее.
-
На вкладке "Параметры источника" можно сохранить все параметры по умолчанию. Другие параметры, скорее всего, будут работать, но не были подтверждены.
-
Нажмите кнопку Далее.
-
На вкладке "Исходное расположение" настройте место на сервере LDAP, из которого вы хотите получить подготовленных пользователей. Это зависит от настроек и потребностей. После настройки нажмите кнопку "Далее".
Сопоставление полей LDAP с SCIM
На вкладке "Сопоставление атрибутов" необходимо сопоставить поля с сервера LDAP с полями SCIM. См. следующий список для поддерживаемых полей SCIM GitHubи значений, ожидаемых в каждом из них.
- Имя пользователя: это нормализуется и используется в качестве имени пользователя GitHub для подготовленного пользователя. См. раздел "Рекомендации по использованию имени пользователя для внешней проверки подлинности". Это должно соответствовать нормализации субъекта, отправленному с утверждением SAML, настроенным с
SAML_SUBJECT
помощью свойства в PingFederate. - Электронная почта: поле, содержащее адрес электронной почты пользователя.
- Отображаемое имя: удобочитаемое пользователем имя.
- Отформатированный имя: полное имя пользователя, включая все имена, названия и суффиксы, отформатированные для отображения.
- Имя: имя пользователя.
- **** Фамилия: фамилия пользователя.
- Внешний идентификатор: этот идентификатор создается поставщиком удостоверений.
- Роли: это поле должно содержать строку, представляющую предполагаемую роль пользователя на GitHub. Допустимые роли:
enterprise_owner
иguest_collaborator``user
.
Закончив настройку этих параметров, нажмите кнопку "Далее".
Завершение настройки и тестирования
- На вкладке "Активация и сводка" для параметра "Состояние канала" выберите "Активный".
- На вкладке "Управление каналами" нажмите кнопку "Готово".
- На вкладке "Исходящая подготовка" нажмите кнопку "Сохранить". Теперь SCIM настроен и включен.
- Подождите несколько минут для запуска подготовки, а затем откройте новое окно частного браузера и перейдите к GitHub.
- Нажмите кнопку " Войти" с помощью SAML. Вы должны быть перенаправлены на страницу входа PingFederate.
- Вы должны иметь возможность войти с учетными данными для пользователя на сервере LDAP, подготовленном для GitHub.
Подготовка PingFederate обрабатывает пользователей и группы независимо. Пользователи должны быть назначены непосредственно для подготовки. Пользователи, которые находятся в назначенной группе, но не назначены напрямую, не будут подготовлены.
После завершения настройки SCIM может потребоваться отключить некоторые параметры SAML, которые вы включили для процесса настройки. См. раздел "Настройка подготовки SCIM для управления пользователями".
Пример создания сертификата X509
Существует несколько способов создания сертификата X509. Ниже приведен пример, который может работать для ваших требований.
-
В окне терминала убедитесь, что OpenSSL установлен, выполнив команду
openssl version
. Если он не установлен, установите его. -
Создайте закрытый ключ с помощью следующей команды.
Shell openssl req -nodes -sha256 -newkey rsa:2048 -keyout MyPrivateKey.key -out MyCertificateRequest.csr
openssl req -nodes -sha256 -newkey rsa:2048 -keyout MyPrivateKey.key -out MyCertificateRequest.csr
Введите необходимые сведения и запишите создаваемый пароль запроса.
-
Чтобы убедиться, что ключ был создан, выполните следующую команду. Имя файла
MyPrivateKey.key
должно быть указано в выходных данных команды.Shell ls | grep MyPrivateKey.key
ls | grep MyPrivateKey.key
-
Создайте сертификат с помощью следующей команды.
Shell openssl x509 -req -days 365 -sha256 -in MyCertificateRequest.csr -signkey MyPrivateKey.key -out pfgh256.crt
openssl x509 -req -days 365 -sha256 -in MyCertificateRequest.csr -signkey MyPrivateKey.key -out pfgh256.crt
-
Чтобы убедиться, что сертификат создан, выполните следующую команду. Имя файла
pfgh256.crt
должно быть указано в выходных данных команды.Shell ls | grep pfgh256.crt
ls | grep pfgh256.crt
-
Экспортируйте PKCS #12-файл с помощью следующей команды. Это файл, который необходимо отправить в PingFederate.
Shell openssl pkcs12 -export -in pfgh256.crt -inkey MyPrivateKey.key -out pfgh256.p12
openssl pkcs12 -export -in pfgh256.crt -inkey MyPrivateKey.key -out pfgh256.p12
-
Чтобы убедиться, что файл был экспортирован, выполните следующую команду. Имя файла
pfgh256.p12
должно быть указано в выходных данных команды.Shell ls | grep pfgh256.p12
ls | grep pfgh256.p12