Сведения о конфигурации 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
.
Значение | Другие названия | Описание | Пример |
---|---|---|---|
Идентификатор сущности SP | URL-адрес SP, ограничение аудитории | URL-адрес верхнего уровня для GitHub Enterprise Server | http(s)://HOSTNAME |
URL-адрес службы контроля доступа (ACS) | URL-адрес ответа, получателя или назначения | URL-адрес, с которого IdP отправляет ответы SAML | http(s)://HOSTNAME/saml/consume |
URL-адрес единого входа SP | URL-адрес, по которому IdP начинает единый вход | http(s)://HOSTNAME/sso |
Атрибуты SAML
Для GitHub Enterprise Server доступны следующие атрибуты SAML. Имена атрибутов можно изменить в Консоль управления, за исключением атрибута 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.