Сведения о конфигурации SAML
Чтобы использовать единый вход SAML для проверки подлинностиGitHub, необходимо настроить внешний поставщик удостоверений SAML (IdP) и организацию.GitHub В конфигурации GitHub SAML функции в качестве поставщика услуг SAML (SP). Дополнительные сведения о проверке подлинности для вашего предприятия см. в разделе Основы управления идентификацией и доступом.
GitHub обеспечивает интеграцию в соответствии со спецификацией SAML 2.0. Дополнительные сведения см. на вики-странице по SAML на веб-сайте OASIS.
При настройке единого входа GitHubSAML необходимо ввести уникальные значения из поставщика удостоверений SAML, а также ввести уникальные значения из GitHub поставщика удостоверений.
Метаданные SAML
Метаданные GitHub Enterprise Cloud субъекта-службы доступны для организаций или предприятий с единым входом SAML.
GitHub использует привязку urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST .
При использовании Enterprise Managed Usersвы можете включить единый вход SAML только на корпоративном уровне.
Организации
Единый вход SAML можно настроить для отдельной организации в предприятии. Вы также можете настроить единый вход SAML для организации, если вы используете отдельную организацию GitHub Enterprise Cloud и не используете корпоративную учетную запись. Дополнительные сведения см. в разделе Управление единым входом SAML для вашей организации.
Метаданные субъекта-службы для организации GitHub доступны https://github.com/orgs/ORGANIZATION/saml/metadataпо адресу, где ОРГАНИЗАЦИЯ — это имя вашей организации GitHub.
| Значение | Другие названия | Description | Пример |
|---|---|---|---|
| Идентификатор сущности поставщика удостоверений | URL-адрес SP, ограничение аудитории | URL-адрес верхнего уровня для организации GitHub.com | https:/ |
| URL-адрес службы контроля доступа (ACS) | URL-адрес ответа, получателя или назначения | URL-адрес, с которого IdP отправляет ответы SAML | https:/ |
| URL-адрес единого входа SP | |||
| URL-адрес, по которому IdP начинает единый вход | https:/ |
Предприятия
В зависимости от среды метаданные sp для предприятия GitHub Enterprise Cloud доступны по адресу:
https://github.com/enterprises/ENTERPRISE/saml/metadata, где ENTERPRISE — это имя вашего предприятияhttps://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/metadata, где SUBDOMAIN — это поддомен для вашего предприятия
| Значение | Другие названия | Description | Пример |
|---|---|---|---|
| Идентификатор сущности поставщика удостоверений | URL-адрес SP, ограничение аудитории | URL-адрес верхнего уровня для предприятия GitHub.com | https:/ |
| URL-адрес службы контроля доступа (ACS) | URL-адрес ответа, получателя или назначения | URL-адрес, с которого IdP отправляет ответы SAML | https:/ |
| URL-адрес единого входа SP | |||
| URL-адрес, по которому IdP начинает единый вход | https:/ |
Атрибуты SAML
Для следующих атрибутов SAML доступны GitHubследующие атрибуты SAML.
| имени | Обязательно | Description |
|---|---|---|
NameID | Постоянный идентификатор пользователя. Можно использовать любой формат идентификатора постоянного имени. | |
Если вы используете предприятие с Enterprise Managed Users, GitHub нормализует NameID элемент для использования в качестве имени пользователя, если не указан один из альтернативных утверждений. Дополнительные сведения см. в разделе Рекомендации по использованию имени пользователя для внешней проверки подлинности. |
[!NOTE] Важно использовать удобочитаемый, постоянный идентификатор. Использование временного формата идентификатора, например urn:oasis:names:tc:SAML:2.0:nameid-format:transient , приведет к повторному связыванию учетных записей при каждом входе, что может быть вредно для управления авторизацией. |
| SessionNotOnOrAfter | | Дата, которая GitHub делает связанное сеанс недействительным. После недопустимости пользователь должен снова пройти проверку подлинности, чтобы получить доступ к ресурсам вашей организации. Дополнительные сведения см. в разделе "Длительность сеанса и время ожидания". |
| |
| full_name | |
Если вы настроите единый вход SAML для предприятия и используетеEnterprise Managed Users, полное имя пользователя, отображаемое на странице профиля пользователя. |
| emails | | Адреса электронной почты пользователя. Если вы синхронизируете использование лицензий между GitHub Enterprise Server и GitHub Enterprise Cloud, GitHub Connect используется emails для идентификации уникальных пользователей в разных продуктах. Дополнительные сведения см. в разделе Синхронизация использования лицензий из GitHub Enterprise Server с облаком. |
| public_keys | |
Если вы настраиваете единый вход SAML для предприятия и используете Enterprise Managed Usersего, ключи общедоступного SSH для пользователя. Можно указать несколько ключей. |
| gpg_keys | |
Если вы настроите единый вход SAML для предприятия и используете Enterprise Managed Usersключи GPG для пользователя. Можно указать несколько ключей. |
Чтобы указать несколько значений для атрибута, используйте несколько элементов <saml2:AttributeValue>.
<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
<saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>
Требования к ответу SAML
GitHub требует, чтобы ответное сообщение от поставщика удостоверений выполнило следующие требования.
-
Ваш IdP должен предоставить элемент
<Destination>в корневом документе ответа и обеспечить соответствие URL-адресу ACS, только если корневой документ ответа подписан. Если идентификатор поставщика удостоверений подписывает утверждение, GitHub проигнорирует утверждение. -
Ваш IdP всегда должен предоставлять элемент
<Audience>как часть элемента<AudienceRestriction>. Значение должно соответствовать вашемуEntityIdGitHubзначению.- Если вы настраиваете SAML для организации, это значение будет равно
https://github.com/orgs/ORGANIZATION. - Если вы настраиваете SAML для предприятия, этот URL-адрес или
https://github.com/enterprises/ENTERPRISE``https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN.
- Если вы настраиваете SAML для организации, это значение будет равно
-
IdP должен предоставить одно утверждение в ответе с цифровой подписью. Это можно сделать, подписав элемент или подписав
<Assertion>``<Response>элемент. -
IdP должен предоставить элемент
<NameID>как часть элемента<Subject>. Вы можете использовать любой формат идентификатора постоянного имени. -
Ваш IdP должен включать атрибут
Recipient, который должен быть настроен с URL-адресом ACS. В следующем примере демонстрируется атрибут.<samlp:Response ...> <saml:Assertion ...> <saml:Subject> <saml:NameID ...>...</saml:NameID> <saml:SubjectConfirmation ...> <saml:SubjectConfirmationData Recipient="https://github.com/enterprises/ENTERPRISE/saml/consume" .../> </saml:SubjectConfirmation> </saml:Subject> <saml:AttributeStatement> <saml:Attribute FriendlyName="USERNAME-ATTRIBUTE" ...> <saml:AttributeValue>monalisa</saml:AttributeValue> </saml:Attribute> </saml:AttributeStatement> </saml:Assertion> </samlp:Response>
Длительность сеанса и время ожидания
Чтобы предотвратить проверку подлинности пользователя с помощью поставщика удостоверений и оставаться авторизованным на неопределенный срок, GitHub периодически отменяет сеанс для каждой учетной записи пользователя с доступом к ресурсам вашего предприятия. После этого пользователь должен снова выполнить проверку подлинности с помощью IdP.
По умолчанию, если поставщик удостоверений не утверждает значение атрибута SessionNotOnOrAfter , GitHub отменяет сеанс 24 часа после успешной проверки подлинности с помощью поставщика удостоверений.
GitHub будет поддерживать настраиваемую длительность сеанса, если поставщик удостоверений предоставляет возможность настроить SessionNotOnOrAfter атрибут и значение.
Если вы определяете настраиваемое значение длительности сеанса менее 24 часов, GitHub пользователи могут запрашивать проверку подлинности при каждом GitHub запуске перенаправления.
Чтобы предотвратить ошибки проверки подлинности, рекомендуется использовать минимальную длительность сеанса в течение 4 часов. Дополнительные сведения см. в разделе Устранение неполадок с проверкой подлинности SAML.
Примечание.
Microsoft Entra ID (ранее известный как Azure AD) не поддерживает атрибут SessionNotOnOrAfter. Кроме того, настраиваемая политика времени существования для токенов SAML, выданных Entra ID , не контролирует время ожиданияGitHubсеанса.