Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Esta versión de GitHub Enterprise se discontinuará el Esta versión de GitHub Enterprise se discontinuó el 2020-08-20. 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.

Versión del artículo: Enterprise Server 2.18

Autorizar aplicaciones OAuth

Puedes habilitar a otros usuarios para que autoricen tu App de OAuth.

En este artículo

GitHub Enterprise's OAuth implementation supports the standard authorization code grant type.

If you want to skip authorizing your app in the standard way, such as when testing your app, you can use the non-web application flow.

For standard apps that run in the browser, use the web application flow to obtain an authorization code and exchange it for a token. (El tipo de concesión implícito no es compatible)

Flujo de aplicaciones Web

Nota: Si estás creando una GitHub App, aún puedes utilizar el flujo de aplicaciones web de OAuth, pero la configuración tiene diferencias importantes. Consulta la sección "Identificar y autorizar usuarios para las GitHub Apps" para obtener más información.

The web application flow to authorize users for your app is:

  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 aplicación accede a la API con el token de acceso del usuario

1. Solicita la identidad de un usuario de GitHub

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
NombreTipoDescripción
client_idstringRequerido. La ID de cliente que recibiste de GitHub cuando te registraste.
redirect_uristringLa URL en tu aplicación a donde se enviará a los usuarios después de la autorización. Consulta los siguientes detalles sobre urls de redireccionamiento.
loginstringSugiere una cuenta específica para utilizar para registrarse y autorizar la app.
alcancestringUna lista de alcances delimitada en espacio. De no proporcionarse, el scope será, predeterminadamente, una lista vacía para los usuarios que no han autorizado ningún alcance para la aplicación. Para los usuarios que han autorizado alcances para la aplicación, el usuario no se mostrará en la página de autorización de OAuth con la lista de alcances. En vez de esto, este paso del flujo se completara automáticamente con el conjunto de alcances que el usuario haya autorizado para la aplicación. Por ejemplo, si un usuario ya realizó el flujo web dos veces y autorizó un token con alcance de user y otro con alcance de repo, un tercer flujo web que no proporcione un scope recibirá un token con los alcances user y repo.
statestringUna secuencia aleatoria indescifrable. Se utiliza para protegerte contra los ataques de falsificación de solicitudes entre sitios.
allow_signupstringYa sea que se ofrezca o no una opción para registrarse en GitHub a los usuarios sin autenticar durante el flujo de OAuth, la opción predeterminada es true. Utiliza false cuando una política prohíba los registros.

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

Si el usuario acepta tu solicitud, GitHub Enterprise lo redirecciona a tu sitio con un code temporal en un parámetro de código así como el estado que proporcionaste en el paso previo en un parámetro de state. El código temporal caducará después de 10 minutos. Si los estados no empatan, entonces un tercero creó la solicitud, y debes abandonar el proceso.

Intercambia este code por un token de acceso:

POST http(s)://[hostname]/login/oauth/access_token
Parámetros
NombreTipoDescripción
client_idstringRequerido. La ID de cliente que recibiste de GitHub Enterprise para tu App GitHub.
client_secretstringRequerido. El secreto del cliente que recibiste de GitHub Enterprise para tu App GitHub.
códigostringRequerido. El código que recibiste como respuesta al Paso 1.
redirect_uristringLa URL en tu aplicación, hacia la cual se envía a los usuarios después de su autorización.
statestringLa secuencia aleatoria indescifrable que proporcionaste en el Paso 1.
Respuesta

Predeterminadamente, la respuesta toma la siguiente forma:

access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&token_type=bearer

También puedes recibir el contenido en diferentes formatos, dependiendo del encabezado de aceptación:

Accept: application/json
{"access_token":"e72e16c7e42f292c6912e7710c838347ae178b4a", "scope":"repo,gist", "token_type":"bearer"}

Accept: application/xml
<OAuth>
  <token_type>bearer</token_type>
  <scope>repo,gist</scope>
  <access_token>e72e16c7e42f292c6912e7710c838347ae178b4a</access_token>
</OAuth>

3. Utiliza el token de acceso para acceder a la API

El token de acceso te permite hacer solicitudes a la API a nombre de un 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

Flujo de aplicaciónes no web

La autenticación no web está disponible para situaciones limitadas, como las pruebas. Si lo necesitas, puedes utilizar la Autenticación Básica para crear un token de acceso personal utilizando tu página de configuración de los tokens de acceso personal. Esta técnica le permite al usuario revocar el acceso en cualquier momento.

Nota: CUando utilices el flujo de aplicaciones no web para crear un token OAuth2, asegúrate de entender cómo trabajar con autenticaciones de dos factores si tú o tus usuarios han habilitado dicho tipo de autenticación.

URLs de Redirección

El parámetro redirect_uri es opcional. Si se deja fuera, GitHub redireccionará a los usuarios a la URL de rellamado configurada en la aplicación de OAuth. De proporcionarse, el puerto y host de las URL de rellamado deberán empatar exactamente con la URL de rellamado. La ruta de las URL de redireccionamiento deberán referenciar un subdirectorio de la URL de rellamado.

CALLBACK: http://example.com/path

GOOD: http://example.com/path
GOOD: http://example.com/path/subdir/other
BAD:  http://example.com/bar
BAD:  http://example.com/
BAD:  http://example.com:8080/path
BAD:  http://oauth.example.com:8080/path
BAD:  http://example.org

URLs de redirección de Localhost

El parámetro opcional redirect_uri también puede utilizarse para las URL de localhost. Si la aplicación especifica una URL y puerto de localhost, entonces, después de autorizar la aplicación, los usuarios se redireccionarán al puerto y URL proporcionados. La redirect_uri no necesita empatar con el puerto especificado en la url de rellamado para la app.

Para la URL de rellamado de http://localhost/path, puedes utilizar esta redirect_uri:

http://localhost:1234/path

Crear tokens múltiples para Apps de OAuth

Puedes crear tokens múltiples para una combinación de usuario/aplicación/alcance para crear tokens para casos de uso específicos.

Esto es útil si tu Aplicación de OAuth es compatible con un flujo de trabajo que utilice GitHub para registrarse y requiera solo información básica del usuario. Otro flujo de trabajo podría requerir acceso a los repositorios privados del usuario. Al utilizar tokens múltiples, tu App de OAuth podrá llevar a cabo el flujo web para cada caso de uso, solicitando únicamente los alcances que necesite. Si un usuario utiliza tu aplicación únicamente para registrarse, nunca se les solicitará otorgar acceso a tu App de OAuth para sus repositorios privados.

Hay un límite en la cantidad de tokens que se emiten por combinación de usuario/aplicación/alcance. Si tu aplicación solicita suficientes tokens para sobrepasar uno de los límites, los tokens anteriores con el mismo alcance que se está solicitando dejarán de funcionar.

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.

Dirigir a los usuarios para revisar su acceso

Puedes vincular a la información de autorización para una App de OAuth para que los usuarios puedan revisar y revocar sus autorizaciones de la aplicación.

Para crear este vínculo, necesitarás el client_id de tus Apps de Oauth, el cual recibiste de GitHub cuando registraste la aplicación.

http(s)://[hostname]/settings/connections/applications/:client_id

Tip: Para aprender más acerca de los recursos a los cuales puede acceder tu App de OAuth para un usuario, consulta la sección "Descubrir recursos para un usuario".

Solución de problemas

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos