Esta versión de GitHub Enterprise se discontinuó el 2021-09-23. No se realizarán lanzamientos de patch, ni siquiera para problemas de seguridad críticos. Para obtener un mejor desempeño, más seguridad y nuevas características, actualiza a la última versión de GitHub Enterprise. Para obtener ayuda con la actualización, contacta al soporte de GitHub Enterprise.

Identificar y autorizar usuarios para las GitHub Apps

Tu GitHub App puede realizar acciones en nombre de un usuario, como crear un informe de problemas, crear un despliegue, y utilizar otras terminales compatibles.

Nota: Los tokens de usuario con caducidad son actualmente parte del beta de tokens de usuario a servidor y están sujetos a cambios. Para decidir unirse a la característica beta de vigencia determinada de los tokens de usuario a servidor, consulta la sección "Activar las características opcionales para las apps". Para obtener más información, consulta la sección "Tokens de acceso con caducidad de usuario a servidor para las GitHub Apps".

Cuando tu GitHub App actúe en nombre de un usuario, ésta realiza solicitudes de usuario a servidor. Estas solicitudes deben autorizarse con un token de acceso de usuario. Las solicitudes de usuario a servidor incluyen el solicitar datos para un usuario, como el determinar qué repositorios mostrar a un usuario en particular. Estas solicitudes también incluyen las acciones que activa un usuario, como ejecutar una compilación.

Para mantener más seguros los tokens de acceso de usuario a servidor, puedes utilizar tokens de acceso que caducarán después de 8 horas, y un token de actualización que se puede intercambiar por un token de acceso nuevo. Para obtener más información, consulta la sección "Actualizar los tokens de acceso de usuario a servidor".

Identificar usuarios en tu sitio

Para autorizar a los usuarios para las apps estándar que se ejecutan en el buscador, utiliza el flujo de aplicaciones web.

Flujo de aplicaciones Web

Al utilizar el flujo de aplicaciones web, el proceso para identificar a los usuarios en tu sitio es:

  1. Se redirecciona a los usuarios para solicitar su identidad de GitHub
  2. GitHub redirecciona a los usuarios de vuelta a tu sitio
  3. Tu GitHub App accede a la API con el token de acceso del usuario

Si seleccionas Solicitar la autorización del usuario (OAuth) durante la instalación cuando crees o modifiques tu app, el paso 1 se completará durante la instalación de la misma. Para obtener más información, consulta la sección "Autorizar usuarios durante la instalación".

1. Solicita la identidad de un usuario de GitHub

Direct the user to the following URL in their browser:

GET http(s)://[hostname]/login/oauth/authorize

Cuando tu GitHub App especifica un parámetro de login, solicita a los usuarios con una cuenta específica que pueden utilizar para registrarse y autorizar tu app.

Parámetros

NombreTypeDescripción
client_idsecuenciaRequerido. La ID de cliente para tu GitHub App. Puedes encontrarla en los Ajustes de tu GitHub App cuando selecciones tu app. Nota: La ID de app y de cliente no son las mismas y no son intercambiables.
redirect_urisecuenciaLa URL en tu aplicación a donde se enviará a los usuarios después de la autorización. Esta debe ser una copia exacta de la URL que proporcionaste en el campo URL de rellamado de autorización de usuario cuando configuraste tu GitHub App y no puede contener ningún parámetro adicional.
statesecuenciaEste deberá contener una secuencia aleatoria para dar protección contra los ataques de falsificación y podría contener cualquier otros datos arbitrarios.
loginsecuenciaSugiere una cuenta específica para utilizar para registrarse y autorizar la app.
allow_signupsecuenciaYa sea que se ofrezca no una opción para que los usuarios autenticados se registren para GitHub durante el flujo de OAuth. la opción predeterminada es true. Utiliza false cuando una política prohíba los registros.

Nota: No necesitas proporcionar alcances en tu solicitud de autorización. A diferencia de la OAuth trandicional, el token de autorizción se limita a los permisos asociados con tu GitHub App y a aquellos del usuario.

2. GitHub redirecciona a los usuarios de vuelta a tu sitio

Si el usuario acepta tu solicitud, GitHub te redirecciona de regreso a tu sitio con un code temporal en un parámetro de código así como con el estado que proporcionaste en el paso anterior en el parámetro state. Si los estados no coinciden significa que un tercero creó la solicitud y que se debe anular el proceso.

Nota: Si seleccionas Solicitar la autorización del usuario (OAuth) durante la instalación cuando creas o modificas tu app, GitHub regreará un code temporal que necesitarás intercambiar por un token de acceso. El parámetro state no se regresa cuando GitHub inicia el flujo de OAuth durante la instalación de la app.

Intercambia este code por un token de acceso. Cuando se habilita el vencimiento de tokens, el token de acceso vence en 8 horas y el token de actualización en 6 meses. Cada que actualizas el token, obtienes un nuevo token de actualización. Para obtener más información, consulta la sección "Actualizar los tokens de acceso de usuario a servidor".

Los tokens de usuario con vigencia determinada son una característica opcional actualmente y están sujetos a cambios. Para decidir unirse a la característica de vigencia determinada de los tokens de usuario a servidor, consulta la sección "Activar las características opcionales para las apps".

Make a request to the following endpoint to receive an access token:

POST http(s)://[hostname]/login/oauth/access_token

Parámetros

NombreTypeDescripción
client_idsecuenciaRequerido. La ID de cliente para tu GitHub App.
client_secretsecuenciaRequerido. El secreto de cliente para tu GitHub App.
códigosecuenciaRequerido. El código que recibiste como respuesta al Paso 1.
redirect_urisecuenciaLa URL en tu aplicación a donde se enviará a los usuarios después de la autorización. Esta debe ser una copia exacta de la URL que proporcionaste en el campo URL de rellamado de autorización de usuario cuando configuraste tu GitHub App y no puede contener ningún parámetro adicional.
statesecuenciaLa secuencia aleatoria indescifrable que proporcionaste en el Paso 1.

Respuesta

Predeterminadamente, la respuesta toma la siguiente forma. Los parámetros de respuesta expires_in, refresh_token, y refresh_token_expires_in solo se devuelven cuando habilitas la vigencia determinada para los tokens de acceso de usuario a servidor.

{
  "access_token": "e72e16c7e42f292c6912e7710c838347ae178b4a",
  "expires_in": 28800,
  "refresh_token": "r1.c1b4a2e77838347a7e420ce178f2e7c6912e1692",
  "refresh_token_expires_in": 15811200,
  "scope": "",
  "token_type": "bearer"
}

3. Tu GitHub App accede a la API con el token de acceso del usuario

El token de acceso del usuario permite que la GitHub App haga solicitudes a la API a nombre del usuario.

Authorization: token OAUTH-TOKEN
GET http(s)://[hostname]/api/v3/user

Por ejemplo, en curl, puedes configurar el encabezado de autorización de la siguiente manera:

curl -H "Authorization: token OAUTH-TOKEN" http(s)://[hostname]/api/v3/user

Revisar a qué recursos de instalación puede acceder un usuario

Ya que tengas un token de OAuth para un usuario, puedes revisar a qué instalaciones puede acceder.

Authorization: token OAUTH-TOKEN
GET /user/installations

También puedes verificar qué repositorios se encuentran accesibles para un usuario para una instalación.

Authorization: token OAUTH-TOKEN
GET /user/installations/:installation_id/repositories

Puedes encontrar más detalles en: Listar instalaciones de app accesibles para el token de acceso del usuario y Listar repositorios accesibles para el token de acceso del usuario.

Gestionar una autorización revocada a una GitHub App

Si un usuario revoca su autorización de una GitHub App, dicha app recibirá el webhook github_app_authorization predeterminadamente. Las GitHub Apps no pueden desuscribirse de este evento. Cualquiera puede revocar su autorización a una GitHub App desde su página de ajustes de cuenta de GitHub. Revocar la autorización de una GitHub App no la desinstalará. Debes programar tu GitHub App para que cuando reciba su webhook deje de llamar a la API en nombre de la persona que revocó el token. Si tu GitHub App sigue utilizando un token de acceso revocado, esta recibirá el error 401 Bad Credentials.

Permisos a nivel de usuario

Puedes agregar permisos a nivel de usuario a tu GitHub App para acceder a los recursos del usuario, tales como correos electrónicos del usuario, los cuales otorgan los usuarios independientes como parte del flujo de autorización del usuario. Los permisos a nivel de usuario difieren de los permisos a nivel de organización y de repositorio, los cuales se otorgan en el momento de la instalación en una cuenta de usuario o de organización.

Puedes seleccionar los permisos a nivel de usuario desde dentro de la configuración de tu GitHub App en la sección de Permisos de usuario de la página de Permisos & webhooks. Para obtener más información sobre seleccionar permisos, consulta la sección Editar los permisos de una GitHub App".

Cuando un usuario instala tu app en su cuenta, el aviso de instalación listará los permisos a nivel de usuario que tu app está solicitando y explicará que la app puede pedir estos permisos a los usuarios independientes.

Ya que los permisos a nivel de usuario se otorgan individualmente, puedes agregarlos a tu app existente sin solicitar que los usuarios los mejoren. Sin embargo, necesitarás enviar usuarios existentes a través del flujo de autorización de usuarios para autorizar los permisos nuevos y obtener un token nuevo de usuario a servidor para estas solicitudes.

Solicitudes de usuario a servidor

Mientras que la mayoría de tu interacción con la API deberá darse utilizando tus tokens de acceso a la instalación de servidor a servidor, ciertas terminales te permiten llevar a cabo acciones a través de la API utilizando un token de acceso. Tu app puede hacer las siguientes solicitudes utilizando las terminales de GraphQL v4 o de REST v3.

Terminales compatibles

Ejecuciones de Verificación

Conjuntos de Verificaciones

Códigos de Conducta

Estados de Despliegue

Implementaciones

Eventos

Fuentes

Blobs de Git

Confirmaciones de Git

Referencias de Git

Matrículas de Git

Árboles de Git

Plantillas de Gitignore

Instalaciones

Asignados de Informes de Problemas

Comentarios de Informes de Problemas

Eventos de Informe de Problemas

Línea de tiempo del Informe de Problemas

Problemas

Etiquetas

Licencias

Markdown

Meta

Hitos

Ganchos de organización

Miembros de la Organización

Colaboradores Externos de una Organización

Ganchos de Pre-recepción de la Organización

Poyectos de Equipo de una Organización

Repositorios de Equipo de la Organización

Equipos de la Organización

Organizaciones

Colaboradores de Proyecto

Proyectos

Comentarios de Extracción

Eventos de Revisión en Solciitudes de Extracción

Solicitudes de Revisión para Solicitudes de Extracción

Revisiones de Solicitudes de Extracción

Extracciones

Reacciones

*Borrar una reacción

Repositorios

Actividad del Repositorio

Ramas de los Repositorios

Colaboradores del Repositorio

Comentarios de Confirmaciones de un Repositorio

Confirmaciones de Repositorio

Comunidad del Repositorio

Contenido de los Repositorios

Envíos de Evento de un Repositorio

Ganchos de Repositorio

Invitaciones a un repositorio

Claves de Repositorio

Páginas de Repositorio

Ganchos de Pre-recepción de un Repositorio

Lanzamientos de repositorio

Estadísticas de Repositorio

Raíz

Estados

Debates de Equipo

Temas

Correo Electrónico de Usuario

Seguidores del Usuario

Utilizar Llaves Gpg

Llaves Públicas de Usuario

Usuarios