Esta versión de GitHub Enterprise se discontinuó el 2021-06-09. 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.

Diferencias entre GitHub Apps y Apps de OAuth

El entender las diferencias entre App GitHub y App OAuth te ayudará a decidir qué app quieres crear. Una App OAuth actúa como un usuario de Github, mientras que una App GitHub utiliza su propia identidad cuando se instala en una organización o en repositorios dentro de una organización.

¿Quién puede instalar GitHub Apps y autorizar Apps de OAuth?

Puedes instalar GitHub Apps en tu cuenta personal o en las organizaciones que te pertenezcan. Si tienes permisos administrativos en un repositorio, puedes instalar GitHub Apps en las cuentas de la organización. Si se instala una GitHub App en un repositorio y requiere permisos de organización, el propietario de la organización deberá aprobar la aplicación.

Predeterminadamente, solo los propietarios de la organización pueden administrar los ajustes de las GitHub Apps en una organización. Para agregar usuarios adicionales para que administren las GitHub Apps en una organización, un propietario puede otorgarles permisos de administrador sobe ellas. Consula la sección "Administradores de GitHub Apps" para aprender cómo agregar y eliminar administradores de GitHub Apps en tu organización.

Por el contrario, los usuarios autorizan las Apps de OAuth, lo cual otorga a estas apps la capacidad de actuar como un usuario autenticado. Por ejemplo, puedes autorizar una App de OAuth que encuentre todas las notificaciones para el usuario autenticado. Siempre puedes retirar los permisos de las Apps de OAuth.

Advertencia: Si revocas todos los permisos de una App OAuth borrarás cualquier llave SSH que haya generado la aplicación en nombre del usuario, , incluyendo las llaves de despliegue.

GitHub AppsOAuth Apps
Debes ser un propietario de la organización o tener permisos administrativos en un repositorio para instalar una GitHub App en una organización. Si se instala una GitHub App en un repositorio y requiere permisos de organización, el propietario de la organización deberá aprobar la aplicación.Puedes autorizar una app de OAuth para que tenga acceso a los recursos.
Puedes instalar una GitHu App en tu repositorio personal.Puedes autorizar una app de OAuth para que tenga acceso a los recursos.
Debes ser un propietario de la organización, propietario del repositorio personal, o tener permisos administrativos en un repositorio para desinstalar una GitHub App y eliminar su acceso.Puedes borrar un token de acceso de OAuth para eliminar el acceso.
Debes ser un propietario de la organización o tener permisos administrativos en un repositorio para solicitar la instalación de una GitHub App.Si está activa una política de aplicación organizacional, cualquier miembro de la organización puede solicitar la instalación de una App de OAuth en dicha organización. Un propietario de la organización deberá aprobar o negar la solicitud.

¿A qué recursos pueden acceder las GitHub Apps y las Apps de OAuth?

Los propietarios de las cuentas pueden utilizar una App GitHub en una cuenta sin otorgarle acceso a otra cuenta. Por ejemplo, puedes instalar un servicio de compilación de terceros en la organización de tu patrón laboral, pero puedes decidir no otorgar a esa compilación acceso de servicio a los repositorios en tu cuenta personal. Una GitHub App permanece instalada si la persona que la configuró deja a la organización.

Una App de OAuth autorizada tiene acceso a todos los recursos que son accesibles para el usuario o el propietario de la organización.

GitHub AppsOAuth Apps
Instalar la GitHub App le otorga acceso a la misma en los repositorios elegidos de la cuenta de usuario o de organización.Autorizar una App de OAuth otorga a dicha app acceso a los recursos que puede acceder el usuario. Por ejemplo, a los repositorios que puede acceder.
El token de instalación de una GitHub App pierde acceso a los recursos si un administrador elimina los repositorios de la instalación.Un token de acceso de OAuth pierde acceso a los recursos cuando el usuario mismo pierde acceso a ellos, como cuando pierden el acceso de escritura a un repositorio.
Los tokens de acceso de la instalación se limitan a los repositorios especificados con los permisos que escogió el creador de la app.Un token de acceso de OAuth se limita por alcances.
Las GitHub Apps pueden solicitar acceso por separado a los informes de problemas y a las solicitudes de extracción sin acceder al contenido real del repositorio.Las Apps de OAuth necesitan solicitar el alcance de repo para obtener acceso a los informes de problemas, solicitudes de extracción, o a cualquier recurso que pertenezca al repositorio.
Las GitHub Apps no están sujetas a las políticas de aplicación de la organización. Una GitHub app solo tendrá acceso a los repositorios que haya otorgado el propietario de una organización.Si una política de aplicación de la organización se encuentra activa, únicamente el propietario de la organización podrá autorizar la instalación de una App de OAuth. Si se instala, la App de OAuth obtiene acceso a todo lo que esté visible para el token que tiene el propietario de la organización dentro de la organización aprobada.
Las GitHub Apps reciben un evento de webhook cuando se cambia o elimina una instalación. Esto indica al creador de la app cuando han recibido más o menos accesos a los recursos organizacionales.Las Apps de OAuth pueden perder el acceso a una organización o a un repositorio en cualquier momento con base en acceso cambiante del usuario que otorga los permisos. La App de OAuth no te informará cuando pierde el acceso a un recurso.

Identificación basada en tokens

Nota: Las GitHub Apps también pueden utilizar un token basado en un usuario. Para obtener más información, consulta la sección "Identificar y autorizar usuarios para las GitHub Apps".

GitHub AppsOAuth Apps
Una GitHub App puede solicitar un token de acceso de la instalación si utiilza una llave privada con un formato de token web de JSON fuera de banda.Una App de OAuth puede intercambiar un token de solicitud por un token de acceso después de una redirección a través de una solicitud web.
Un token de instalación identifica a la app como el bot de las GitHub Apps, tal como el @jenkins-bot.Un token de acceso identifica a la app como el usuario que otorgó el token para la app, tal como el @octocat.
Los tokens de instalación caducan después de un tiempo predefinido (actualmente, 1 hora).Los tokens de OAuth permanecen activos hasta que el cliente los revoque.
Las App GitHub hacen solicitudes de servidor a servidor para utilizar el límite de tasa mínimo de la instalación, que es de 5,000 solicitudes por hora. Las instalaciones de organización con más de 20 usuarios reciben 50 solicitudes adicionales por hora para cada usuario. Las instalaciones que tienen más de 20 repositorios reciben otras 50 solicitudes adicionales por hora para cada repositorio. El límite de tasa máximo para una instalación es de 12,500 solicitudes por hora.Los tokens de OAuth utilizan el límite de tasa del usuario de 5,000 solicitudes por hora.
Pueden otorgarse incrementos en el límite de tasa tanto a nivel de las GitHub Apps (lo cual afecta a todas las instalaciones) como a nivel de la instalación individual.Los incrementos en el límite de tasa se otorgan por cada App de OAuth. Cada token que se otorgue a esa App de OAuth obtiene el límite incrementado.

Solicitar niveles de permiso para recursos

A diferencia de las apps de OAuth, las GitHub Apps tiene permisos específicos que les permiten solicitar acceso únicamente a lo que necesitan. Por ejemplo, una GitHub App de Integración Continua (IC) puede solicitar acceso de lectura al contenido del repositorio y acceso de escritura la API de estado. Puede que alguna otra GitHub App no tenga acceso de escritura o lectura al código, pero aún podrá administrar informes de problemas, etiquetas e hitos. Las Apps de OAuth no pueden utilizar permisos granulares.

AccesoGitHub Apps (permisos de read o write)OAuth Apps
Para acceder a los repositorios públicosEl repositorio público necesita elegirse durante la instalación.alcance public_repo.
Para acceder al código/contenido del repositorioContenidos del repositorioalcance repo.
Para acceder a informes de problemas, etiquetas e hitosProblemasalcance repo.
Para acceder a solicitudes de extracción, etiquetas e hitosSolicitudes de extracciónalcance repo.
Para acceder a estados de confirmación (para compilaciones de IC)Estados de confirmaciónalcance repo:status.
Para acceder a los despliegues y estados de despliegueImplementacionesalcance repo_deployment.
Para recibir eventos a través de un webhookLas GitHub Apps incluyen un webhook predeterminadamente.alcance write:repo_hook o write:org_hook.

Descubrimiento de repositorios

GitHub AppsOAuth Apps
Las GitHub Apps pueden ver a /installation/repositories para encontrar repositorios a los que puede acceder la instalación.Las Apps de OAuth pueden ver a /user/repos para tener una vista de tipo usuario o a /orgs/:org/repos para tener una de tipo organización para los repositorios accesibles.
Las Github Apps reciben webhooks cuando los repositorios se agregan o eliminan de la instalación.Las Apps de OAuth crean webhooks de organización para las notificaciones cuando se crea un repositorio nuevo dentro de una organización.

Webhooks

GitHub AppsOAuth Apps
Predeterminadamente, las GitHub Apps tienen un solo webhook que recibe los eventos que se les ha configurado para recibir para cada repositorio al que tengan acceso.Las Apps de OAuth solicitan el alcance de webhook para crear un webhook de repositorio para cada repositorio del cual necesiten recibir eventos.
Las GitHub Apps reciben algunos eventos a nivel organizacional con el permiso del miembro de la organización.Las Apps de OAuth solicitan el alcance de webhook de la organización para crear un webhook de organización para cada organización de la cual necesiten recibir eventos de nivel organizacional.

Acceso a Git

GitHub AppsOAuth Apps
Las GitHub Apps solicitan permiso a los contenidos del repositorio y utilizan tu token de instalación para autenticarte a través de Git basado en HTTP.Las Apps de OAuth piden el alcance write:public_key y Crean una llave de despliegue a través de la API. Entonces puedes utilizar esa llave para ejecutar comandos de Git.
El token se utiliza como la contraseña HTTP.El token se utiliza como el nombre de usuario HTTP.

Cuentas de máquina vs cuentas de bot

Las cuentas de usuario de máquina son cuentas de usuario basadas en OAuth que segregan sistemas automatizados utilizando el sistema de usuarios de GitHub.

Las cuentas de bot son específicas para las GitHub Apps y se crean en cada GitHub App.

GitHub AppsOAuth Apps
Los bots de las GitHub Apps no consumen una plaza de GitHub Enterprise.Una cuenta de usuario de máquina consume una plaza de GitHub Enterprise.
Ya que jamás se otorga una contraseña a un bot de una GitHub App, un cliente no podrá iniciar sesión directamente en él.Una cuenta de usuario de máquina obtiene un nombre de usuario y contraseña para que el cliente lo administre y asegure.