Note
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 más información, consulta 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.
Note
Si vas 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 más información, consulta 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 GitHub Enterprise Server. |
repo | Concede acceso completo a repositorios públicos y privados, incluidos el acceso de lectura y escritura al código, los estados de confirmación, las invitaciones de repositorio, los colaboradores, los estados de implementación y los 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 y privados, 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 para repositorios públicos y privados. Este alcance solo se necesita para otorgar acceso a otros usuarios o servicios a los estados de implementación, sin otorgarles 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 estrella los repositorios públicos. |
repo:invite | Concede las capacidades de aceptación o rechazo de invitaciones para colaborar en un repositorio. Este ámbito 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 ámbito solo se necesita para otorgar acceso a otros usuarios o servicios a los eventos de seguridad sin otorgarles acceso al código. |
admin:repo_hook | Otorga acceso de lectura, escritura, ping y eliminación a los enlaces en repositorios públicos, privados o internos. Los ámbitos 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 los miembros de la organización y a los proyectos de la organización. |
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 OAuth app. Un Personal access token solo podrá 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 | Otorga acceso para seguir o no seguir a otros usuarios. |
delete_repo | Otorga acceso para eliminar repositorios que se pueden administrar. |
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 más información, consulta Publicación de un paquete. |
read:packages | Otorga acceso para descargar o instalar paquetes desde GitHub Packages. Para más información, consulta Instalación de un paquete. |
delete:packages | Otorga acceso para eliminar paquetes de GitHub Packages. Para más información, consulta Borrar y restablecer 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 las claves de 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 automática de tokens. |
admin:enterprise | Proporciona control total de la funcionalidad empresarial. Para obtener más información, consulta Administrar 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, consulta Acerca de los ejecutores autohospedados. |
manage_billing:enterprise | Lectura y escritura de datos de facturación de la empresa. Para más información, consulta Puntos de conexión de la API de REST para la facturación. |
read:enterprise | Lectura de todos los datos de un perfil de empresa. No incluye los datos de perfil de los miembros de la empresa ni de las organizaciones. |
read:audit_log | Lee los datos del registro de auditoría. |
Note
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
.