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

Autorizar aplicaciones OAuth

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

La implementación de OAuth de GitHub Enterprise Server es compatible con el tipo de otorgamientos de código de autorización estándar y con el Otorgamiento de Autorización de Dispositivos de OAuth 2.0 para las apps que no tengan acceso a un buscador web.

Si quieres saltar el proceso de autorización de tu app en el modo estándar, tal como sucede cuando la estás probando, puedes utilizar el flujo no web para aplicaciones.

Para autorizar tu app de OAuth, considera qué flujo de autorizaciones queda mejor con ella.

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.

El flujo web de aplicaciones para autorizar a los usuarios en tu app es:

  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

NombreTypeDescripción
client_idsecuenciaRequerido. La ID de cliente que recibiste de GitHub cuando te registraste.
redirect_urisecuenciaLa 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.
loginsecuenciaSugiere una cuenta específica para utilizar para registrarse y autorizar la app.
alcancesecuenciaUna 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.
statesecuenciaUna secuencia aleatoria indescifrable. Se utiliza para protegerte contra los ataques de falsificación de solicitudes entre sitios.
allow_signupsecuenciaYa 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 Server 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

NombreTypeDescripción
client_idsecuenciaRequerido. La ID de cliente que recibiste de GitHub Enterprise Server para tu App OAuth.
client_secretsecuenciaRequerido. El secreto del cliente que recibiste de GitHub Enterprise Server para tu App OAuth.
códigosecuenciaRequerido. El código que recibiste como respuesta al Paso 1.
redirect_urisecuenciaLa URL en tu aplicación, hacia la cual se envía a los usuarios después de su autorización.

Respuesta

Predeterminadamente, la respuesta toma la siguiente forma:

access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&scope=repo%2Cgist&token_type=bearer

You can also receive the response in different formats if you provide the format in the Accept header. For example, Accept: application/json or Accept: application/xml:

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 de diez tokens que se emite por combinación de usuario/aplicación/alcance. Si una aplicación crea más de 10 tokens para el mismo usuario y los mismos alcances, se revocarán los tokens más antiguos con la misma combinación de usuario/aplicación/alcance.

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

Leer más