Skip to main content

Alcances para las Apps de OAuth

Los alcances te permiten especificar exactamente el tipo de acceso que necesitas. Los ámbitos limitan el acceso a los tokens de OAuth. No otorgan ningún permiso adicional más allá de aquél que el usuario ya tiene.

Cuando estás configurando una App de OAuth en GitHub, los alcances solicitados se muestran al usuario en el formato de autorización.

Nota: Si va a compilar una aplicación de GitHub, no es necesario proporcionar alcances en la solicitud de autorización. Para obtener más información sobre el tema, consulte "Identificación y autorización de usuarios para aplicaciones de GitHub".

Si tu OAuth App no tiene acceso a un buscador, tal como una herramienta de CLI, entonces no necesitarás especificar un alcance para que los usuarios se autentiquen dicha app. Para obtener más información, consulte "Autorización de aplicaciones de OAuth".

Verifica los encabezados para ver qué alcances de OAuth tienes, y cuáles acepta la acción de la API:

$ curl -H "Authorization: Bearer OAUTH-TOKEN" http(s)://[hostname]/api/v3/users/codertocat -I
HTTP/2 200
X-OAuth-Scopes: repo, user
X-Accepted-OAuth-Scopes: user
  • X-OAuth-Scopes enumera los alcances que el token ha autorizado.
  • X-Accepted-OAuth-Scopes enumera los alcances que comprueba la acción.

Ámbitos disponibles

Nombre | Descripción -----|-----------| (no scope) | Concede acceso de solo lectura a la información pública (incluida la información del perfil de usuario, la información del repositorio y los gists) site_admin | Concede a los administradores del sitio acceso a los puntos de conexión de la API de administración de GitHub Enterprise Server. repo | Concede acceso total a los repositorios públicos, internos y privados, incluido acceso de lectura y escritura al código, estados de confirmación, invitaciones del repositorio, colaboradores, estados de implementación y webhooks de repositorio. Nota: Además de los recursos relacionados con el repositorio, el ámbito repo también concede acceso para administrar recursos propiedad de la organización, incluidos proyectos, invitaciones, pertenencias a equipos y webhooks. Este ámbito también concede la capacidad de administrar proyectos propiedad de los usuarios.  repo:status| Otorga acceso de lectura/escritura a los estados de confirmación en los repositorios públicos, privados e internos. Este alcance solo se necesita para otorgar acceso a otros usuarios o servicios a los estados de las confirmaciones en repositorios privados sin otorgarles acceso al código.  repo_deployment| Concede acceso a los estados de implementación de repositorios públicos y privados. Este alcance solo es necesario para conceder acceso a otros usuarios o servicios a los estados de implementación sin conceder acceso al código.  public_repo| Limita el acceso a los repositorios públicos. Esto incluye el acceso de lectura/escritura al código, estados de las confirmaciones, proyectos de repositorio, colaboradores y estados de despliegue para los repositorios públicos y para las organizaciones. También es necesario para marcar con asterisco los repositorios públicos.  repo:invite | Concede capacidades para aceptar o rechazar las invitaciones de colaboración en un repositorio. Este alcance solo es necesario para otorgar acceso a otros usuarios o servicios a las invitaciones sin otorgar acceso al código.  security_events | Concesiones:
acceso de lectura y escritura a eventos de seguridad en la API de code scanning
Este alcance solo es necesario para conceder acceso a otros usuarios o servicios a eventos de seguridad sin conceder acceso al código. admin:repo_hook | Concede acceso de lectura, escritura, ping y eliminación a los enlaces de repositorios públicos, privados o internos. Los alcances repo y public_repo conceden acceso total a los repositorios, incluidos los enlaces de repositorio. Use el alcance admin:repo_hook para limitar el acceso solo a los enlaces de repositorio.  write:repo_hook | Otorga acceso de lectura, escritura y ping a los enlaces en repositorios públicos, privados o internos.  read:repo_hook| Otorga acceso de lectura y ping a los enlaces en repositorios públicos, privados o internos. admin:org | Para administrar totalmente la organización y los equipos, proyectos y pertenencias.  write:org| Acceso de lectura y escritura a la pertenencia de la organización, los proyectos de la organización y la pertenencia a equipos.  read:org| Acceso de solo lectura a la pertenencia de la organización, los proyectos de la organización y la pertenencia a equipos. admin:public_key | Administre totalmente las claves públicas.  write:public_key| Cree, enumere y vea los detalles de claves públicas.  read:public_key| Enumere y vea los detalles de claves públicas. admin:org_hook | Otorga acceso de lectura, escritura, ping y borrado a los enlaces de la organización. Nota: Los tokens de OAuth solo podrán realizar estas acciones en los enlaces de la organización que se hayan creado con la aplicación de OAuth. Los tokens de acceso personal solo podrán llevar a cabo estas acciones en los ganchos de la organización que cree un usuario. gist | Otorga acceso de escritura a los gists. notifications | Concesiones:
acceso de lectura a las notificaciones de un usuario
acceso de marcación y lectura a subprocesos
acceso de inspección y anulación de inspección de un repositorio
acceso de lectura, escritura y eliminación a suscripciones de subprocesos user | Otorga acceso de lectura/escritura únicamente a la información de perfiles. Tenga en cuenta que este alcance incluye user:email y user:follow.  read:user| Otorga acceso para leer los datos del perfil de un usuario.  user:email| Otorga acceso de lectura a las direcciones de correo electrónico de un usuario.  user:follow| Concede acceso para seguir o dejar de seguir a otros usuarios. delete_repo | Concede acceso para eliminar repositorios administrables. write:discussion | Permite el acceso de lectura y escritura a debates de equipo.  read:discussion | Permite el acceso de lectura a debates de equipo. write:packages | Otorga acceso para cargar o publicar un paquete en GitHub Packages. Para obtener más información, consulte "Publicación de un paquete". read:packages | Otorga acceso para descargar o instalar paquetes desde GitHub Packages. Para obtener más información, consulte "Instalación de un paquete". delete:packages | Otorga acceso para eliminar paquetes de GitHub Packages. Para más información, consulta "Eliminación y restauración de un paquete". admin:gpg_key | Administración completa de claves de GPG.  write:gpg_key| Cree, enumere y visualice los detalles de claves GPG.  read:gpg_key| Enumere y vea los detalles de claves GPG. workflow | Concede la capacidad de agregar y actualizar archivos de flujo de trabajo de GitHub Actions. Los archivos de flujo de trabajo pueden confirmarse sin este alcance en caso de que el mismo archivo (con la misma ruta y el mismo contenido) exista en otra rama en el mismo repositorio. Los archivos de flujo de trabajo pueden exponer GITHUB_TOKEN, que pueden tener un conjunto diferente de alcances. Para obtener más información, consulta "Autenticación en un flujo de trabajo". admin:enterprise | Proporciona control total de la funcionalidad empresarial. Para obtener más información, consulta "Administración de cuentas empresariales" en la documentación de la API de GraphQL.

Incluye manage_runners:enterprise, manage_billing:enterprise, y read:enterprise.  manage_runners:enterprise | Proporciona control total sobre los ejecutores autohospedados dentro de la empresa. Para más información, consulte Seguridad del ejecutor autohospedado con repositorios públicos.  manage_billing:enterprise | Lectura y escritura de datos de facturación de la empresa. Para obtener más información, consulta "Facturación" en la documentación de la API de REST.  read:enterprise | Lectura de todos los datos de un perfil de empresa. No incluye los datos de perfil de los miembros de la empresa o las organizaciones.

Nota: La aplicación de OAuth puede solicitar los alcances en el redireccionamiento inicial. Puede especificar varios alcances si los separa con un espacio utilizando %20:

https://github.com/login/oauth/authorize?
  client_id=...&
  scope=user%20repo_deployment

Alcances solicitados y otorgados

El atributo scope enumera los alcances vinculados al token que otorgó el usuario. Normalmente, estos alcances serán idénticos a lo que solicitaste. Sin embargo, los usuarios pueden editar sus alcances, lo cual es efectivo para otorgar a la organización menos accesos de los que se solicitó en un principio. Además, los usuarios pueden editar los alcances de los tokens después de completar un flujo de OAuth. Debe conocer esta posibilidad y ajustar el comportamiento de la aplicación en consecuencia.

Es importante gestionar los casos de error en donde un usuario elige otorgarle menos acceso del que solicitó en un principio. Por ejemplo, las aplicaciones pueden advertir o comunicar de cualquier otra forma a sus usuarios que se ha reducido el rendimiento o que no son capaces de realizar alguna acción.

Además, las aplicaciones siempre pueden redirigir a los usuarios a través del flujo para obtener permisos adicionales, pero no olvide que dichos usuarios siempre pueden negarse a hacerlo.

Consulte la Guía de aspectos básicos de la autenticación, que proporciona sugerencias sobre cómo controlar alcances de tokens modificables.

Alcances normalizados

Cuando se solicitan varios alcances, el token se guarda con una lista de alcances normalizada y se descartan aquellos que se incluyen de manera implícita en otro alcance solicitado. Por ejemplo, la solicitud user,gist,user:email dará como resultado un token con únicamente los alcances user y gist, porque el acceso concedido con el alcance user:email se incluye en el alcance user.