Skip to main content

Устранение неполадок с управлением удостоверениями и доступом для вашей организации

Просмотрите и разрешите распространенные ошибки по устранению неполадок с управлением единым входом SAML вашей организации, синхронизацией команд или подключением поставщика удостоверений (IdP).

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

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

При возникновении этой ошибки убедитесь, что время у поставщика удостоверений правильно синхронизируется с NTP-сервером.

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

Пользователи многократно направляются на проверку подлинности

Если пользователи попадают в цикл непрерывных перенаправлений на проверку подлинности SAML, вам следует увеличить длительность сеанса SAML в параметрах поставщика удостоверений.

Значение SessionNotOnOrAfter, которое отправляется в ответе SAML, определяет длительность периода, после которого пользователь будет снова перенаправлен к поставщику удостоверений для проверки подлинности. Если длительность сеанса SAML настроена в течение 2 часов или меньше, GitHub обновит сеанс SAML 5 минут до истечения срока действия. Это означает, что при длительности сеанса в 5 минут и менее пользователи застревают в цикле постоянной проверки подлинности SAML.

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

Некоторые пользователи не подготовлены или их подготовка отменена системой SCIM

При возникновении проблем с подготовкой пользователей рекомендуется проверить наличие метаданных SCIM.

Если для вашей организации реализована подготовка SCIM, любые изменения членства пользователя в организации должны активироваться из поставщика удостоверений. Если пользователь приглашен в организацию вручную, а не с помощью существующей интеграции SCIM, учетная запись этого пользователя может быть неправильно связана с его удостоверением SCIM. В будущем это может препятствовать отзыву данной учетной записи пользователя через SCIM. Если пользователь удаляется вручную, а не с помощью существующей интеграции SCIM, устаревшее связанное удостоверение останется, что может привести к проблемам, когда пользователю потребуется повторно присоединиться к данной организации.

Если у участника организации отсутствуют метаданные SCIM, можно вручную повторно подготовить SCIM для пользователя с помощью поставщика удостоверений.

Аудит пользователей для отсутствия метаданных SCIM

Если вы подозреваете или заметили, что какие-то пользователи не подготовлены или их подготовка не отменена должным образом, рекомендуется провести аудит всех пользователей в вашей организации.

Чтобы проверить, есть ли у пользователей идентичность SCIM (метаданные SCIM) во внешнем идентификаторе, вы можете просматривать метаданные SCIM для одного члена GitHub организации одновременно или программно проверять всех членов организации с помощью API GitHub .

Когда IdP отправляет провизионный вызов в GitHub SCIM API, SCIM userName в этом API должен совпадать с сохранившейся SAML nameID в связанной SAML-идентичности пользователя в организации. Если эти два значения не совпадают, метаданные SCIM не будут заполнены, а удостоверение SCIM не будет успешно связано. Чтобы проверить, совпадают ли эти значения, используйте GitHub API.

Члены аудиторских организаций на GitHub

Чтобы подтвердить, что метаданные SCIM существуют для одного участника организации, владельцу организации необходимо перейти на этот URL-адрес и заменить <organization> и <username>:

https://github.com/orgs/<organization>/people/<username>/sso

Если внешнее удостоверение пользователя содержит метаданные SCIM, владелец организации увидит на этой странице раздел удостоверений SCIM. Если внешнее удостоверение не содержит метаданные SCIM, раздел "Удостоверение SCIM" не будет существовать.

Аудит членов организаций через API GitHub

Как владелец организации, вы также можете запросить REST API SCIM или GraphQL, чтобы получить список всех подготовленных удостоверений SCIM в организации.

Использование REST API

REST API SCIM будет возвращать данные только для пользователей с метаданными SCIM, заполненными в разделе их внешних удостоверений. Рекомендуется сравнить список подготовленных удостоверений SCIM со списком всех участников организации.

Дополнительные сведения см. в разделе:

Использование GraphQL

Этот запрос GraphQL показывает вам SAML NameId, SCIM UserName и GitHub имя пользователя (login) для каждого пользователя в организации. Чтобы использовать этот запрос, замените ORG на название своей организации.

{
  organization(login: "ORG") {
    samlIdentityProvider {
      ssoUrl
      externalIdentities(first: 100) {
        edges {
          node {
            samlIdentity {
              nameId
            }
            scimIdentity {
              username
            }
            user {
              login
            }
          }
        }
      }
    }
  }
}
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{ "query": "{ organization(login: \"ORG\") { samlIdentityProvider { externalIdentities(first: 100) { pageInfo { endCursor startCursor hasNextPage } edges { cursor node { samlIdentity { nameId } scimIdentity {username} user { login } } } } } } }" }' https://api.github.com/graphql

Дополнительные сведения об использовании API GraphQL см. в разделе:

Повторная подготовка SCIM для пользователей с помощью поставщика удостоверений

ScIM можно вручную повторно подготовить для пользователей с помощью поставщика удостоверений. Например, чтобы исправить ошибки настройки Okta, в админ-портале Okta можно снять и переназначить пользователей в приложение GitHub . Это должно заставить Okta выполнить вызов API для заполнения метаданных SCIM для этих пользователей на GitHub. Дополнительные сведения см. в разделе "Отмена назначения пользователей из приложений " или "Назначение пользователей приложениям " в документации okta.

Чтобы убедиться, что удостоверение SCIM пользователя создано, рекомендуется протестировать этот процесс с одним участником организации, для которого подтверждено отсутствие внешнего удостоверения SCIM. После ручного обновления пользователей в вашем IdP вы можете проверить, была ли SCIM-идентичность пользователя создана с помощью SCIM-API или на GitHub. Дополнительные сведения см. в разделе "Аудит пользователей" для отсутствующих метаданных SCIM или Конечные точки REST API для SCIM.

Если перенастройка SCIM для пользователей не поможет, пожалуйста, обратитесь GitHub в службу поддержки.

Ошибка: «Для приглашения участников через адрес электронной почты требуется подтверждённый адрес электронной почты»

Эта ошибка может возникать при наладке SCIM, если GitHub у пользователя, авторизировавшей интеграцию SCIM, нет подтверждённого адреса электронной почты.

Для организаций, использующих поддерживаемые SCIM IDP, такие интеграции используют приложение OAuth. Когда вы впервые настраиваете интеграцию через админ-портал IdP, GitHub пользователь авторизирует приложение OAuth, а GitHub затем выполняет все последующие операции SCIM (включая приглашение новых участников) от имени этого пользователя. Если адрес электронной почты этого пользователя больше не проверяется, вызовы SCIM-настройки для новых пользователей будут невыполнены из-за этой ошибки, а существующие участники остаются неизменными.

Устранение ошибки

  1. Определите GitHub пользовательскую учётную запись, которая в последний раз одобрила интеграцию SCIM. Вы можете просмотреть org.invite_member события в журнале аудита вашей организации, чтобы найти учетную запись пользователя, от имени которой выполняются операции SCIM.
  2. Войдите в этот GitHub пользовательский аккаунт и проверьте адрес электронной почты, связанный с аккаунтом. Только один GitHub аккаунт может подтвердить определённый адрес электронной почты одновременно. Дополнительные сведения см. в разделе Подтверждение адреса электронной почты.
  3. После проверки электронной почты попробуйте повторить операцию настройки SCIM от вашего провайдера идентификации.

Конфликтующая ошибка удостоверения SAML

Когда пользователи пытаются выполнить проверку подлинности с помощью поставщика удостоверений SAML (IdP) для доступа к организации GitHub или предприятия впервые, они могут столкнуться со следующим сообщением об ошибке.

Учетная запись пользователя GitHub [имя пользователя GitHub] в настоящее время не связана. Однако вы пытаетесь пройти проверку подлинности в поставщике удостоверений с помощью удостоверения SAML [учетная запись пользователя IdP], который уже связан с другой учетной записью пользователя GitHub в [организации/предприятия]. Обратитесь к одному из владельцев GitHub [организация/предприятие], чтобы получить помощь.

Если идентификатор idP имеет идентификатор Entra, сообщение об ошибке будет включать User Object ID связанное удостоверение в идентификатор Entra ID, который GitHub называется External ID.

Это сообщение об ошибке возникает, так как внешнее удостоверение может быть связано только с одной учетной записью пользователя GitHub в организации или организации.

Идентификация пользователя с конфликтующим удостоверением

При обращении пользователей с этой ошибкой можно выполнить следующие действия, чтобы определить конфликтующие учетные записи.

  1. Используйте API GraphQL GitHub, чтобы определить, какой пользователь связан с конфликтующим внешним удостоверением.
    • Если SAML настроен на уровне организации** GitHub**: владелец организации должен запрашивать существующие внешние удостоверения на уровне организации и фильтровать их по SAML NameID учетной записи поставщика удостоверений, с которым пользователь выполняет проверку подлинности при возникновении этой ошибки. См. пример org-saml-identities-filtered-by-nameid-username.graphql в репозиторииplatform-samples.
    • Если SAML настроен на уровне предприятия** GitHub**: владелец предприятия должен запрашивать существующие внешние удостоверения на корпоративном уровне и фильтровать их по SAML NameID учетной записи поставщика удостоверений, с которым пользователь выполняет проверку подлинности при возникновении этой ошибки. См. пример enterprise-saml-identities-filtered-by-nameid.graphql в репозиторииplatform-samples.
  2. Если вы определили пользователя GitHub, связанного с конфликтующим внешним удостоверением, чтобы убедиться, что пользователь по-прежнему активен в организации и любых организациях в нем, владелец предприятия может выполнить действия , описанные в AUTOTITLE.

Разрешение конфликта

Когда вы выполнили действия по выявлению конфликтующих учетных записей, существуют различные варианты разрешения в зависимости от ваших результатов. Если при попытке выполнить эти действия или возникнут проблемы, можно открыть запрос в службу поддержки GitHub с помощью Портал поддержки GitHub.

Конфликтующий пользователь GitHub больше не нуждается в доступе

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

  • Если вы используете подготовку SCIM для управления членством в организации, необходимо отменить подготовку пользователя из поставщика удостоверений через SCIM, а не выполнить действия на сайте GitHub. В противном случае связанное удостоверение SAML и SCIM пользователя останется в организации, что может по-прежнему вызвать ошибку.
  • Если для управления членством в организации не используется подготовка SCIM, см. раздел [AUTOTITLE или Удаление участника из организации](/admin/managing-accounts-and-repositories/managing-users-in-your-enterprise/removing-a-member-from-your-enterprise). Не забудьте также удалить доступ пользователя из приложения GitHub для организации или предприятия в idP.

Чтобы убедиться, что удостоверение SAML или SCIM успешно удалено из организации GitHub для пользователя, см. в разделе Устранение неполадок с управлением удостоверениями и доступом для вашей организации.

Конфликтующий пользователь GitHub по-прежнему нуждается в доступе

Если имеется учетная запись пользователя GitHub, связанная с конфликтующим внешним удостоверением, и этому пользователю по-прежнему нужен доступ к организации или предприятия, необходимо либо изменить связанное удостоверение для учетной записи пользователя, либо получить пользователя, получающего ошибку проверки подлинности с другим удостоверением поставщика удостоверений.

  • Если вы используете подготовку SCIM для управления членством в организации и необходимо изменить внешнее удостоверение, связанное с учетной записью GitHub участника, отмените подготовку пользователя из поставщика удостоверений (например, отмените назначение и переназначение пользователя в приложение).
    • При отмене подготовки пользователя IdP их учетная запись GitHub и связанное удостоверение SAML/SCIM будут удалены из организации GitHub.
    • При повторной подготовке пользователя IdP в организацию GitHub будет создано новое приглашение отложенной организации и новое удостоверение SCIM без связи. Это позволит пользователю войти с помощью этой учетной записи пользователя GitHub, пройти проверку подлинности с помощью SAML и связать новое удостоверение поставщика удостоверений с учетной записью. Эти действия помогут убедиться, что новое удостоверение SAML и SCIM правильно связаны с учетной записью пользователя GitHub в организации.
  • Если вы не используете подготовку SCIM для управления членством в организации или если SAML настроена на корпоративном уровне, вы можете отозвать связанное внешнее удостоверение для пользователя, выполнив действия, описанные в одной из следующих статей:

Не найден конфликтующий пользователь GitHub

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

  • Если вы используете подготовку SCIM для управления членством в организации, удалите устаревшее удостоверение без связи из поставщика удостоверений (например, отмените назначение пользователя из приложения IdP).
  • Если вы не используете подготовку SCIM для управления членством в организации, чтобы отозвать связанное внешнее удостоверение, перейдите к одному из следующих URL-адресов ниже, чтобы отозвать внешнее удостоверение. Замените USERNAME на имя пользователя GitHub, который не может войти в систему, или ORGANIZATION ENTERPRISE соответствующим значением.
    • https://github.com/orgs/ORGANIZATION/people/USERNAME/sso
    • https://github.com/enterprises/ENTERPRISE/people/USERNAME/sso

Дополнительные материалы