Skip to main content

Ámbitos para las aplicaciones 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.

Nota: Considera la posibilidad de crear una GitHub App en lugar de una OAuth app. Las GitHub Apps usan permisos específicos en lugar de ámbitos, lo que te ofrece más control sobre lo que puede hacer la aplicación. Para obtener más información, vea «Diferencias entre aplicaciones de GitHub y aplicaciones de OAuth» y «Acerca de la creación de GitHub Apps».

Cuando configuras una OAuth app en GitHub, los ámbitos solicitados se muestran al usuario en el formulario 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 más información al respecto, consulta "Autenticación con una aplicación de GitHub en nombre de un usuario".

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, vea «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" https://api.github.com/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

NombreDescripció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) repo
repo:statusOtorga acceso de lectura/escritura a los estados de confirmación en los repositorios públicos y privados. 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_deploymentConcede 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_repoLimita 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
security_eventsConcesiones:
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
write:repo_hookOtorga acceso de lectura, escritura y ping a los enlaces en repositorios públicos o privados.
read:repo_hookOtorga acceso de lectura y ping a los enlaces en repositorios públicos o privados.
admin:orgPara administrar totalmente la organización y los equipos, proyectos y pertenencias.
write:orgAcceso de lectura y escritura a la pertenencia de la organización, los proyectos de la organización y la pertenencia a equipos.
read:orgAcceso de solo lectura a la pertenencia de la organización, los proyectos de la organización y la pertenencia a equipos.
admin:public_keyAdministre totalmente las claves públicas.
write:public_keyCree, enumere y vea los detalles de claves públicas.
read:public_keyEnumere y vea los detalles de claves públicas.
admin:org_hookOtorga 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 OAuth app. Un Personal access token solo podrá llevar a cabo estas acciones en los ganchos de la organización que cree un usuario.
gistOtorga acceso de escritura a los gists.
notificationsConcesiones:
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
userOtorga acceso de lectura/escritura únicamente a la información de perfiles. Tenga en cuenta que este alcance incluye user:email y user:follow.
read:userOtorga acceso para leer los datos del perfil de un usuario.
user:emailOtorga acceso de lectura a las direcciones de correo electrónico de un usuario.
user:followConcede acceso para seguir o dejar de seguir a otros usuarios.
projectConcede acceso de lectura y escritura a instancias de projects de usuario y organización.
read:projectConcede acceso de solo lectura al usuario y a la organización projects. delete_repo
read:packagesOtorga acceso para descargar o instalar paquetes desde GitHub Packages. Para más información, consulta "Instalación de un paquete".
delete:packagesOtorga acceso para eliminar paquetes de GitHub Packages. Para obtener más información, vea «Borrar y restablecer un paquete».
admin:gpg_keyAdministración completa de claves de GPG.
write:gpg_keyCree, enumere y visualice los detalles de claves GPG.
read:gpg_keyEnumere y vea los detalles de claves GPG.
codespaceConcede la capacidad de crear y administrar Codespaces. Los codespaces pueden exponer un GITHUB_TOKEN que puede tener un conjunto de alcances diferente. Para más información, consulta "Seguridad en GitHub Codespaces". workflow

Nota: La OAuth app puede solicitar los ámbitos 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.