Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Поддержка этой версии GitHub Enterprise была прекращена 2023-01-18. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, укрепления безопасности и новых функций установите последнюю версию GitHub Enterprise. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Справочник по конфигурации SAML

Вы можете просмотреть метаданные SAML для экземпляр GitHub Enterprise Server, а также узнать больше о доступных атрибутах SAML и требованиях к ответу.

Сведения о конфигурации SAML

Чтобы использовать единый вход SAML для проверки подлинности в GitHub Enterprise Server, Необходимо настроить внешний поставщик удостоверений SAML (IdP) и экземпляр GitHub Enterprise Server. В конфигурации SAML GitHub Enterprise Server используется как поставщик услуг (SP) SAML.

Вы должны ввести уникальные значения из вашего SAML IdP при настройке SAML SSO для GitHub Enterprise Server, а также вы должны ввести уникальные значения из GitHub Enterprise Server в вашем IdP. Дополнительные сведения о настройке единого входа SAML для GitHub Enterprise Server см. в разделах Настройка единого входа SAML для вашего предприятия.

Метаданные SAML

Метаданные поставщика услуг для экземпляр GitHub Enterprise Server доступны по адресу http(s)://HOSTNAME/saml/metadata, где HOSTNAME — это имя узла вашего экземпляра. В GitHub Enterprise Server используется привязка urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST.

ЗначениеДругие названияОписаниеПример
Идентификатор сущности SPURL-адрес SP, ограничение аудиторииURL-адрес верхнего уровня для GitHub Enterprise Serverhttp(s)://HOSTNAME
URL-адрес службы контроля доступа (ACS)URL-адрес ответа, получателя или назначенияURL-адрес, с которого IdP отправляет ответы SAMLhttp(s)://HOSTNAME/saml/consume
URL-адрес единого входа SPURL-адрес, по которому IdP начинает единый входhttp(s)://HOSTNAME/sso

Атрибуты SAML

Следующие атрибуты SAML доступны для GitHub Enterprise Server. Вы можете изменить имена атрибутов в консоли управления, за исключением самого атрибута administrator. Дополнительные сведения см. в разделе Доступ к консоли управления.

ИмяНеобходим?Описание
NameIDДаПостоянный идентификатор пользователя. Можно использовать любой формат идентификатора постоянного имени. GitHub Enterprise Server нормализует элемент NameID для использования в качестве имени пользователя, если не указано одно из альтернативных утверждений. Дополнительные сведения см. в разделе Рекомендации по использованию имени пользователя для внешней проверки подлинности.

Примечание. Важно, чтобы идентификатор был понятным человеку и постоянным. Переменный формат идентификатора, например urn:oasis:names:tc:SAML:2.0:nameid-format:transient, приведет к повторной привязке учетных записей при каждом входе, что может затруднить управление авторизацией.
SessionNotOnOrAfterНетДата, когда GitHub Enterprise Server делает соответствующий сеанс недействительным. После аннулирования пользователь должен еще раз пройти проверку подлинности, чтобы получить доступ к экземпляр GitHub Enterprise Server. Дополнительные сведения см. в разделе Длительность сеанса и время ожидания.

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

  • Ваш IdP должен предоставить элемент <Destination> в корневом документе ответа и обеспечить соответствие URL-адресу ACS, только если корневой документ ответа подписан. Если ваш IdP подпишет утверждение, GitHub Enterprise Server проигнорирует это утверждение.

  • Ваш IdP всегда должен предоставлять элемент <Audience> как часть элемента <AudienceRestriction>. Значение должно совпадать с вашим EntityId для GitHub Enterprise Server.{ % ifversion ghes or ghae %} Это значение представляет собой URL-адрес, по которому вы обращаетесь к экземпляр GitHub Enterprise Server, например http(s)://HOSTNAME.{ % endif %}

  • Ваш 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://HOSTNAME/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 Enterprise Server периодически делает сеанс недействительным для каждой учетной записи пользователя с доступом к экземпляр GitHub Enterprise Server. После этого пользователь должен снова выполнить проверку подлинности с помощью IdP. По умолчанию, если ваш IdP не утверждает значение атрибута SessionNotOnOrAfter, GitHub Enterprise Server делает сеанс недействительным на одну неделю после успешной проверки подлинности с использованием вашего IdP.

Чтобы настроить длительность сеанса, можно определить значение атрибута SessionNotOnOrAfter в IdP. Если вы укажете значение менее 24 часов, GitHub Enterprise Server может предлагать пользователям выполнять проверку подлинности каждый раз, когда GitHub Enterprise Server инициирует перенаправление.

Примечания

  • Для Azure AD настраиваемая политика времени жизни для токенов SAML не контролирует время ожидания сеанса для GitHub Enterprise Server.
  • Сейчас Okta не отправляет атрибут SessionNotOnOrAfter во время проверки подлинности SAML с GitHub Enterprise Server. Чтобы получить дополнительные сведения, обратитесь в Okta.