Skip to main content

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

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

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

Если пользователи попадают в цикл непрерывных перенаправлений на проверку подлинности 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 .

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

Аудит участников организации в 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 со списком всех участников организации.

Дополнительные сведения см. в разделе: * Конечные точки REST API для SCIM * Конечные точки REST API для участников организации

Использование 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 см. в разделе: * Guides

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

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

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

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

Конфликтующая ошибка удостоверения 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

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

  •         [AUTOTITLE](/admin/identity-and-access-management/managing-iam-for-your-enterprise/troubleshooting-identity-and-access-management-for-your-enterprise)