Skip to main content

Solución de problemas de administración de acceso e identidad para la organización

Revisa y resuelve los errores comunes de las soluciones de problemas para administrar el SSO de SAML de tu organización, la sincronización de equipos o la conexión con el proveedor de identidad (IdP).

Error: "La hora actual es anterior a la condición NotBefore"

Este error puede producirse cuando hay una diferencia de tiempo demasiado grande entre el IdP y GitHub, lo que suele ocurrir con IdP auto hospedados.

Si te aparece este error, asegúrate de que la hora del IdP esté sincronizada correctamente con el servidor NTP.

Si se usa ADFS como idP, también se establece NotBeforeSkew en ADFS en 1 minuto para GitHub. Si NotBeforeSkew se establece en 0, hasta diferencias de tiempo muy pequeñas, incluidos milisegundos, puede causar problemas de autenticación.

Los usuarios se redirigen repetidamente para autenticarse

Si los usuarios se redirigen repetidamente al símbolo del sistema de autenticación de SAML en un bucle, es posible que tenga que aumentar la duración de la sesión de SAML en la configuración de IdP.

El valor SessionNotOnOrAfter enviado en una respuesta SAML determina cuándo se redirigirá un usuario de nuevo al IdP para autenticarse. Si se configura una duración de sesión de SAML de 2 horas o menos, GitHub actualizará una sesión de SAML 5 minutos antes de que expire. Si la duración de la sesión está configurada como 5 minutos o menos, los usuarios pueden quedarse bloqueados en un bucle de autenticación SAML.

Para solucionar este problema, se recomienda configurar una duración mínima de la sesión de SAML de 4 horas. Para más información, consulta Referencia de configuración de SAML.

Algunos usuarios no están aprovisionados o desaprovisionados por SCIM

Cuando encuentras problemas de aprovisionamiento con los usuarios, te recomendamos que verifiques si estos no tienen metadatos de SCIM.

Si el aprovisionamiento de SCIM se implementa para su organización, los cambios en la pertenencia a la organización de un usuario se deben desencadenar desde el proveedor de identidades. Si se invita a un usuario manualmente a una organización en lugar de mediante una integración de SCIM existente, es posible que su cuenta de usuario no se vincule correctamente a su identidad de SCIM. Esto puede impedir que la cuenta de usuario se desaprovisione a través de SCIM en el futuro. Si un usuario se quita manualmente en lugar de mediante una integración de SCIM existente, permanecerá una identidad vinculada obsoleta, lo que puede provocar problemas si el usuario necesita volver a unirse a la organización.

Si a un miembro de la organización el faltan metadatos de SCIM, entonces puedes volver a aprovisionar el SCIM para este de forma manual mediante tu IdP.

Auditar usarios para los metadatos perdidos de SCIM

Si sospechas o notas que cualquier usuario no se aprovisionó o desaprovisionó como lo esperabas, te recomendamos que audites a todos los usuarios de tu organización.

Para comprobar si los usuarios tienen una identidad de SCIM (metadatos de SCIM) en su identidad externa, puedes revisar los metadatos de SCIM para un miembro de la organización por vez en GitHub o puedes revisar mediante programación a todos los miembros utilizando la API de GitHub.

Cuando el IdP envía una llamada de aprovisionamiento a la API SCIM de GitHub, el SCIM userName de esa llamada API debe coincidir con la SAML nameID almacenada en la identidad de SAML vinculada del usuario en la organización. Si estos dos valores no coinciden, los metadatos de SCIM no se rellenarán y la identidad de SCIM no se vinculará correctamente. Para comprobar si estos valores coinciden, use la API de GitHub.

Auditar a los miembros de tu organización en GitHub

Como propietario de la organización, para confirmar que existen metadatos de SCIM para un único miembro de la organización, visita esta dirección URL, reemplazando <organization> y <username>:

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

Si la identidad externa del usuario incluye metadatos de SCIM, el propietario de la organización debería ver una sección de identidad de SCIM en esa página. Si su identidad externa no incluye cualquier metadato de SCIM, la sección de identidad de SCIM no existirá.

Auditar a los miembros de la organización mediante la API de GitHub

Como propietario de la organización, también puedes consultar la API de REST de SCIM o GraphQL para que listen todas las identidades de SCIM aprovisionadas en una organización.

Mediante la API de REST

La API de REST de SCIM solo devolverá datos para los usuarios que tengan metadatos de SCIM ya llenos en sus identidades externas. Te recomendamos comparar una lista de identidades aprovisionadas de SCIM con una lista de todos tus miembros organizacionales.

Para más información, vea:

Utilizar GraphQL

Esta consulta de GraphQL muestra el NameId de SAML, el UserName de SCIM y el nombre de usuario de GitHub (login) de cada usuario en la organización. Para usar esta consulta, reemplaza ORG por el nombre de la organización.

{
  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

Para obtener más información sobre cómo utilizar la API de GraphQL, consulta:

Volver a aprovisionar SCIM para los usuarios mediante tu proveedor de identidad

Puedes volver a aprovisionar SCIM para los usuarios manualmente a través de tu IdP. Por ejemplo, para resolver los errores de aprovisionamiento para Okta, en el portal de administración de Okta, puedes desasignar y reasignar usuarios a la app de GitHub. Esto debería activar a Okta para hacer una llamada a la API para llenar los metadatos de SCIM para estos usuarios en GitHub. Para obtener más información, consulta Cancelar la asignación de usuarios de aplicaciones o Asignar usuarios a aplicaciones en la documentación de Okta.

Para confirmar que la identidad de SCIM de un usuario se creó, te recomendamos probar este proceso con un solo miembro organizacional de quien hayas confirmado que no existe una identidad externa de SCIM. Después de actualizar los usuarios manualmente en tu IdP, puedes verificar si la identidad de SCIM del usuario se creó utilizando la API de SCIM o en GitHub. Para obtener más información, consulta Auditar usuarios para los metadatos perdidos de SCIM o Puntos de conexión de API de REST para SCIM.

Si volver a aprovisionar el SCIM para los usuarios no funciona, por favor, contacta al Soporte de GitHub.

Error de identidad de SAML en conflicto

Cuando los usuarios intentan autenticarse con el proveedor de identidades (IdP) de SAML para acceder a una organización o empresa de GitHub por primera vez, pueden encontrar el siguiente mensaje de error.

La cuenta de usuario de GitHub [nombre de usuario de GitHub] está actualmente vinculada. Pero intentas autenticarte con tu proveedor de identidades mediante la identidad de SAML de [cuenta de usuario de IdP], que ya está vinculada a otra cuenta de usuario de GitHub en la [organización o empresa]. Ponte en contacto con uno de los propietarios de la [organización o empresa] de GitHub para obtener ayuda.

Si el IdP es Entra ID, el mensaje de error incluirá el valor User Object ID de la identidad vinculada en Entra ID, a la que GitHub hace referencia como External ID.

Este mensaje de error se produce porque una identidad externa solo se puede vincular a una sola cuenta de usuario de GitHub dentro de una organización o empresa.

Identificación del usuario con una identidad en conflicto

Cuando los usuarios te comunican este error, puedes ejecutar los pasos siguientes para identificar las cuentas en conflicto.

  1. Usa GraphQL API de GitHub para determinar qué usuario está vinculado a la identidad externa en conflicto.
    • Si SAML está configurado en el nivel de organización de GitHub: un propietario de la organización debe consultar las identidades externas existentes en el nivel de organización y filtrarlas por el valor NameID de SAML de la cuenta de IdP con la que el usuario se autentica cuando se produce este error. Consulta el ejemplo org-saml-identities-filtered-by-nameid-username.graphql en el repositorio platform-samples.
    • Si SAML está configurado en el nivel de empresa de GitHub: un propietario de la empresa debe consultar las identidades externas existentes en el nivel de empresa y filtrarlas por el valor NameID de SAML de la cuenta de IdP con la que el usuario se autentica cuando se produce este error. Consulta el ejemplo enterprise-saml-identities-filtered-by-nameid.graphql en el repositorio platform-samples.
  2. Si has identificado un usuario de GitHub asociado a la identidad externa en conflicto, para confirmar si sigue activo en la empresa y en cualquier organización de esta, un propietario de la empresa puede seguir los pasos descritos en Visualizar a las personas en tu empresa.

Resolución del conflicto

Cuando hayas seguido los pasos para identificar cuentas en conflicto, hay varias opciones de resolución en función de los resultados. Si tienes problemas al intentar seguir estos pasos o tienes preguntas, puedes abrir una incidencia de soporte técnico de GitHub mediante Portal de soporte de GitHub.

El usuario de GitHub en conflicto ya no necesita acceso

Si hay una cuenta de usuario de GitHub asociada a la identidad externa en conflicto que ya no necesita acceso a la organización o empresa de GitHub, quítala como miembro. Si el usuario se quita correctamente, también se debe quitar su identidad de SAML vinculada y la identidad de SCIM vinculada si existe en el nivel de organización.

  • Si usas el aprovisionamiento de SCIM para administrar la pertenencia a la organización, debes desaprovisionar al usuario del IdP desde SCIM, en lugar de seguir los pasos de GitHub. De lo contrario, la identidad de SAML y SCIM vinculada del usuario permanecerá en la organización, lo que puede seguir causando el error.
  • Si no usas el aprovisionamiento de SCIM para administrar la pertenencia a la organización, consulta Eliminar a un miembro de tu organización o Eliminar a un miembro de tu empresa. Asegúrate de quitar también el acceso del usuario de la aplicación de GitHub para la organización o empresa en el IdP.

Para confirmar que una identidad de SAML o SCIM se ha quitado correctamente de una organización de GitHub para un usuario, consulta Solución de problemas de administración de acceso e identidad para la organización.

El usuario de GitHub en conflicto todavía necesita acceso

Si hay una cuenta de usuario de GitHub asociada a la identidad externa en conflicto y este usuario todavía necesita acceso a la organización o empresa, tendrás que cambiar la identidad vinculada de la cuenta de usuario, o bien hacer que el usuario que recibe el error se autentique con otra identidad de IdP.

  • Si usas el aprovisionamiento de SCIM para administrar la pertenencia a una organización y tienes que cambiar la identidad externa vinculada a la cuenta de GitHub del miembro, desaprovisiona al usuario del IdP (por ejemplo, cancela la asignación del usuario y vuelve a asignarlo a la aplicación).
    • Cuando se desaprovisiona el usuario de IdP, su cuenta de GitHub y la identidad de SAML/SCIM vinculada se quitarán de la organización de GitHub.
    • Cuando el usuario IdP se vuelve a aprovisionar en la organización de GitHub, se creará una invitación de organización pendiente y una identidad de SCIM sin vincular. Esto permitirá al usuario iniciar sesión con esta cuenta de usuario de GitHub, autenticarse mediante SAML y vincular la nueva identidad de IdP a su cuenta. Estos pasos ayudarán a garantizar que la nueva identidad de SAML y SCIM estén vinculadas correctamente a la cuenta de usuario de GitHub de la organización.
  • Si no usas el aprovisionamiento de SCIM para administrar la pertenencia a la organización o si SAML está configurado en el nivel de la empresa, puedes revocar la identidad externa vinculada para el usuario mediante los pasos descritos en uno de los artículos siguientes:

No se ha encontrado ningún usuario de GitHub en conflicto

Si no hay ninguna cuenta de usuario de GitHub asociada a la identidad externa en conflicto, puedes revocar la identidad externa.

  • Si usas el aprovisionamiento de SCIM para administrar la pertenencia a la organización, quita la identidad obsoleta y desvinculada del IdP (por ejemplo, desasigna al usuario de la aplicación de IdP).
  • Si no usas el aprovisionamiento de SCIM para administrar la pertenencia a la organización, para revocar la identidad externa vinculada, ve a una de las siguientes direcciones URL para revocar la identidad externa. Reemplaza USERNAME por el nombre del usuario de GitHub que no puede iniciar sesión y ORGANIZATION o ENTERPRISE por el valor adecuado.
    • https://github.com/orgs/ORGANIZATION/people/USERNAME/sso
    • https://github.com/enterprises/ENTERPRISE/people/USERNAME/sso

Información adicional