Skip to main content

Устранение неполадок с проверкой подлинности SAML

Если вы используете SAML single sign-on (SSO), и люди не могут пройти аутентификацию для доступа GitHub, вы можете устранить проблему.

Сведения о проблемах с проверкой подлинности SAML

GitHub Enterprise Server ведёт сообщения об ошибке при неудачной SAML-аутентификации в журналах systemd для контейнера github-unicorn . Вы можете просмотреть ответы в этом журнале и настроить более подробное ведение журнала.

Дополнительные сведения о требованиях к ответу SAML см. в разделе Справочник по конфигурации SAML.

Настройка отладки SAML

Можно настроить GitHub Enterprise Server так, чтобы писать подробные отладочные логи для каждой попытки аутентификации SAML. Возможно, вы сможете устранить неполадки неудачных попыток проверки подлинности с помощью этих дополнительных выходных данных.

Предупреждение

  • Включайте отладку SAML только на время и отключайте ее сразу после завершения устранения неполадок. Если оставить отладку включённой, размер логов увеличивается гораздо быстрее, чем обычно, что может негативно сказаться на производительности GitHub Enterprise Server.
  • Тестируйте новые настройки ваш экземпляр GitHub Enterprise Server аутентификации в среде staging, прежде чем применять их в производственной среде. Дополнительные сведения см. в разделе Настройка промежуточного экземпляра.
  1. В правом верхнем углу GitHub Enterprise Serverщелкните рисунок профиля, а затем выберите параметры Enterprise.

  2. В верхней части страницы нажмите «Политики».

  3. В разделе Policies, нажмите кнопку "Параметры".

  4. В разделе "Отладка SAML" нажмите раскрывающийся список и выберите Включено.

  5. Попробуйте войти ваш экземпляр GitHub Enterprise Server через ваш SAML IDP.

  6. Просмотрите отладочный результат в systemd журнале для github-unicorn on ваш экземпляр GitHub Enterprise Server. Дополнительные сведения см. в разделе Сведения о системных журналах.

  7. Завершив устранение неполадок, откройте раскрывающийся список и выберите Отключено.

Декодирование ответов

Некоторые выходные данные в журнале systemd``github-unicorn могут быть закодированы в кодировке Base64. Вы можете получить доступ к административной оболочке и использовать base64 утилиту для ваш экземпляр GitHub Enterprise Server декодирования этих ответов. Дополнительные сведения см. в разделе Доступ к административной оболочке (SSH).

Чтобы декодировать выходные данные, выполните следующую команду, заменив ENCODED_OUTPUT кодированные выходные данные из журнала.

base64 --decode ENCODED_OUTPUT

Ошибка: "Другой пользователь уже владеет этой учетной записью"

Когда пользователь впервые входит в ваш экземпляр GitHub Enterprise Server систему с помощью SAML-аутентификации, GitHub он создаёт пользовательскую учетную запись на экземпляре и сопоставляет SAML NameID``nameid-format с аккаунтом.

При повторном входе GitHub Enterprise Server пользователь сравнивает NameID данные аккаунта и nameid-format сопоставления с ответом IdP. Если NameID ответ или nameid-format в IdP больше не совпадает с ожидаемыми значениями GitHub пользователя, вход не состоится. Пользователь увидит следующее сообщение.

Другой пользователь уже владеет этой учетной записью. Попросите администратора проверить журнал аутентификации.

Сообщение обычно указывает, что имя пользователя или адрес электронной почты были изменены у поставщика удостоверений. Убедитесь, что NameID``nameid-format отображение для аккаунта пользователя совпадает GitHub Enterprise Server с NameID``nameid-format вашим idP. Дополнительные сведения см. в разделе Обновление SAML NameID пользователя.

Ошибка: "Получатель в ответе SAML пустой или недопустимый"

Если не Recipient совпадает с URL ACS для ваш экземпляр GitHub Enterprise Server, одно из следующих двух сообщений об ошибке появится в журнале аутентификации при попытке аутентификации пользователя.

Recipient in the SAML response must not be blank.
Recipient in the SAML response was not valid.

Убедитесь, что вы установили значение для Recipient на вашем IDP в полном URL ACS для ваш экземпляр GitHub Enterprise Server. Например: https://ghe.corp.example.com/saml/consume.

Ошибка: "Ответ SAML не подписан или изменен"

Если поставщик удостоверений не подписал ответ SAML или подпись не соответствует содержимому, в журнале проверки подлинности появится следующее сообщение об ошибке.

SAML Response is not signed or has been modified.

Убедитесь, что вы настроили подписанные утверждения для GitHub приложения на вашем IdP.

Ошибка: "Аудитория недопустима" или "Утверждение не найдено"

Если в ответе поставщика удостоверений отсутствует или неверное значение Audience, в журнале проверки подлинности появится следующее сообщение об ошибке.

Audience is invalid. Audience attribute does not match https://YOUR-INSTANCE-URL

Убедитесь, что на вашем IdP EntityId значение Audience для ваш экземпляр GitHub Enterprise Serverдля , что является полным URL вашего экземпляра. Например: https://ghe.corp.example.com.

Ошибка: "Текущее время раньше, чем указано в условии NotBefore"

Эта ошибка может возникать, если между поставщиком удостоверений и переменными данных.product.github %}, которая обычно возникает с локальными поставщиками удостоверений.

Чтобы предотвратить возникновение таких проблем, мы рекомендуем назначить для вашего устройства тот же источник сетевого протокола времени (NTP), который использует поставщик удостоверений. При возникновении этой ошибки убедитесь, что время на вашем устройстве правильно синхронизируется с NTP-сервером. Команду в административной оболочке можно использовать chronyc для немедленной синхронизации времени. Дополнительные сведения см. в разделе Настройка синхронизации времени.

Если в качестве поставщика удостоверений вы используете ADFS, также установите значение 1 минута в ADFS в параметре NotBeforeSkew для GitHub. Если NotBeforeSkew имеет значение 0, то проблемы с проверкой подлинности будут возникать даже при очень небольших различиях во времени, даже в несколько миллисекунд.

Ошибка: "сбой — обновленная проверка SAML вернула недопустимый результат"

Эта ошибка может возникнуть в версии 3.17.0 или более поздней версии ваш экземпляр GitHub Enterprise Server. Он указывает на невозможность GitHub корректно обработать ответ SAML, полученный от поставщика идентификации. Пожалуйста, откройте GitHub заявку в службу поддержки, чтобы GitHub команда поддержки и инженерии могла расследовать и устранить проблему.

Ошибка: несоответствие дайджеста

Ошибка «Дайджест несовпадения» указывает на то, что ваш SAML IDP использует другой сертификат подписания SAML, отличный от того, в который вы загружены GitHub , или что Signature Method или Digest Method, настроенные GitHub на них, отличаются от того, что использует ваш IDP.

Заново скачайте этот SAML-сертификат с вашего IDP и проверьте его с помощью онлайн-инструмента, например, Format a x509 cert tool от OneLogin. Затем снова загрузите сертификат SAML в раздел «Аутентификация» в вашей GitHub Enterprise Server консоли управления. См. Администрирование экземпляра из веб-интерфейса.