Skip to main content

Autenticación SAML

Si usa el inicio de sesión único (SSO) de SAML y los usuarios no pueden autenticarse para acceder a GitHub, puede solucionar el problema.

Acerca de los problemas con la autenticación SAML

GitHub Enterprise Server registra mensajes de error de autenticación SAML errónea en registros en el diario de systemd para el contenedor github-unicorn. Puede revisar las respuestas en este archivo de registro, y también puede configurar un registro más detallado.

Para obtener más información sobre los requisitos de respuesta de SAML, consulta "Referencia de configuración de SAML".

Configurar la depuración de SAML

Puedes configurar GitHub Enterprise Server a fin de escribir registros detallados de depuración en para cada intento de autenticación de SAML. Es posible que puedas solucionar los problemas de los intentos de autenticación fallidos con esta salida adicional.

Warning

  • Habilita la depuración de SAML solo temporalmente e inhabilita la depuración inmediatamente después de que termines de solucionar los problemas. Si deja habilitada la depuración, el tamaño del archivo logs aumenta mucho más rápido de lo habitual, lo que puede repercutir negativamente en el rendimiento de GitHub Enterprise Server.
  • Prueba la configuración de autenticación nueva de tu instancia de GitHub Enterprise Server en un entorno de ensayo antes de aplicarla en el entorno de producción. Para obtener más información, vea «Configurar una instancia de preparación».
  1. En la esquina superior derecha de GitHub Enterprise Server, haz clic en la foto de perfil y luego en Configuración de empresa.

    Captura de pantalla del menú desplegable que aparece al hacer clic en la foto de perfil en GitHub Enterprise Server. La opción "Configuración de Enterprise" está resaltada en un contorno naranja oscuro.

  2. En el lado izquierdo de la página, en la barra lateral de la cuenta de empresa, haz clic en Directivas.

  3. En Directivas, haga clic en Opciones.

  4. En "SAML debugging" (Depuración de SAML), seleccione la lista desplegable y haga clic en Enabled (Habilitado).

  5. Intenta iniciar sesión en tu instancia de GitHub Enterprise Server mediante tu IdP de SAML.

  6. Revisa la salida de depuración en el diario de systemd para github-unicorn en tu instancia de GitHub Enterprise Server. Para obtener más información, consulta "Acerca de los registros del sistema".

  7. Cuando haya terminado de solucionar problemas, seleccione la lista desplegable y haga clic en Disabled (Deshabilitado).

Descodificación de respuestas

Algunas salidas en el diario systemd para github-unicorn pueden estar codificadas en Base64. Puedes acceder al shell administrativo y utilizar la utilidad de base64 en tu instancia de GitHub Enterprise Server para descodificar estas respuestas. Para obtener más información, vea «Acceder al shell administrativo (SSH)».

Para descodificar la salida, ejecuta el comando siguiente, reemplazando ENCODED_OUTPUT por la salida codificada del registro.

base64 --decode ENCODED_OUTPUT

Error: "Another user already owns the account"

Cuando un usuario inicia sesión en tu instancia de GitHub Enterprise Server por primera vez con la autenticación SAML, GitHub Enterprise Server crea una cuenta de usuario en la instancia y asigna los elementos NameID y nameid-format de SAML a la cuenta.

Cuando el usuario vuelve a iniciar sesión, GitHub Enterprise Server compara la asignación de NameID y nameid-format de la cuenta con la respuesta del IdP. Si elemento NameID o nameid-format de la respuesta del IdP ya no coinciden con los valores que espera GitHub Enterprise Server para el usuario, se producirá un error en el inicio de sesión. El usuario verá el siguiente mensaje.

Another user already owns the account. Please have your administrator check the authentication log.

Este mensaje habitualmente indica que el nombre de usuario o dirección de correo electrónico cambió en el IdP. Asegúrese de que la asignación de NameID y nameid-format de la cuenta de usuario en GitHub Enterprise Server coincida con los elementos NameID y nameid-format del usuario en el IdP. Para obtener más información, vea «Actualización de NameID de SAML de un usuario».

Si la respuesta SAML no está firmada o la firma no coincide con los contenidos, se presentará el siguiente mensaje de error en el registro de autenticación:

Si Recipient no coincide con la URL de ACS para tu instancia de GitHub Enterprise Server, cuando un usuario intente autenticarse aparecerá uno de los dos mensajes de error siguientes.

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

Asegúrate de establecer el valor de Recipient en el IdP en la URL completa de ACS para tu instancia de GitHub Enterprise Server. Por ejemplo, https://ghe.corp.example.com/saml/consume.

Error: "SAML Response is not signed or has been modified"

Si tu IdP no firma la respuesta de SAML, o si la firma no empata con el contenido, se mostrará el siguiente mensaje de error en la bitácora de autenticación.

SAML Response is not signed or has been modified.

Asegúrate de configurar aserciones firmadas para la aplicación de GitHub Enterprise Server en tu IdP.

Error: "Audience is invalid" or "No assertion found"

Si la respuesta del IdP tiene un valor que falta o que es incorrecto Audience, se mostrará el mensaje de error siguiente en el registro de autenticación.

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

Asegúrate de establecer el valor de Audience del IdP en EntityId para tu instancia de GitHub Enterprise Server, que es la dirección URL completa de la instancia. Por ejemplo, https://ghe.corp.example.com.

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 Enterprise Server, lo que suele ocurrir con IdP auto hospedados.

Para evitar este problema, se recomienda apuntar el dispositivo al mismo origen del Protocolo de tiempo de red (NTP) que el IdP, si es posible. Si te aparece este error, asegúrate de que la hora del appliance esté sincronizada correctamente con el servidor NTP. Puedes utilizar el comando chronyc en el shell administrativo para sincronizar la hora de inmediato. Para más información, consulta "Configuración de la sincronización de la hora".

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.