¿Qué es OAuth? «Inicia sesión con Google» y acceso delegado explicado
OAuth es un estándar abierto que permite a un usuario dar a una app acceso limitado a su cuenta en otro servicio, sin entregarle su contraseña. Cuando haces clic en «Conectar Google Calendar» y ves una pantalla que pregunta «¿Permitir que esta app vea tus eventos?», eso es OAuth. La app recibe un token solo para lo que aprobaste, que puedes revocar en cualquier momento. La misma maquinaria, con una capa extra llamada OpenID Connect, impulsa el «Inicia sesión con Google» y botones similares.
Por qué importa OAuth al construir con IA
OAuth aparece en dos situaciones comunes al construir una app:
- Inicio de sesión social. Quieres que tus usuarios «inicien sesión con Google» (o Apple, Microsoft, GitHub) en lugar de crear otra contraseña. Consulta cómo añadir inicio de sesión a tu app.
- Conectarse a las cuentas de los usuarios en otros servicios. Tu app necesita leer el calendario de un usuario, publicar en su cuenta social, obtener archivos de su nube o sincronizar sus datos contables.
En ambos casos, tu creador con IA puede escribir el código, pero algunos pasos solo los puedes dar tú: crear una app de desarrollador con el proveedor, obtener un client ID y un client secret, registrar las URLs de callback y, para ciertos permisos, pasar la revisión del proveedor. Entender cómo funciona OAuth hace que esos pasos, y los errores que producen, sean mucho menos misteriosos. Para el panorama general del inicio de sesión, consulta qué es la autenticación.
Una analogía cotidiana
Piensa en la tarjeta llave de un hotel. Al registrarte, la recepción confirma quién eres y te entrega una tarjeta que abre tu habitación y el gimnasio, no las demás habitaciones ni las zonas del personal, y que deja de funcionar al hacer el checkout. La tarjeta no contiene tu pasaporte. Si la pierdes, la recepción la cancela y te da otra.
- La recepción es el servidor de autorización (la página de inicio de sesión de Google).
- La comprobación de tu identidad es que inicies sesión en Google.
- La tarjeta llave es el token de acceso.
- «Solo habitación y gimnasio» son los scopes que aprobaste.
- El checkout es que el token caduque, o que tú revoques el acceso.
La app que estás usando nunca ve tu contraseña de Google, solo la tarjeta llave.
Cómo funciona OAuth, paso a paso
El flujo más común en apps web es el flujo de código de autorización. Esto es lo que pasa cuando un usuario conecta su Google Calendar a una app de citas:
- Clic. El usuario hace clic en «Conectar Google Calendar».
- Redirección al proveedor. La app envía el navegador a Google con su client ID, los scopes que quiere (leer eventos del calendario) y la URI de redirección a la que Google debe devolver al usuario.
- Inicio de sesión y consentimiento. El usuario inicia sesión en Google (si aún no lo ha hecho) y ve una pantalla de consentimiento con los permisos que pide la app. Hace clic en Permitir.
- De vuelta con un código. Google redirige el navegador a la URI de redirección de la app con un código de autorización de un solo uso y de corta duración.
- Intercambio en el servidor. El servidor de la app envía ese código, junto con su client secret, directamente a Google y recibe un token de acceso (y a menudo un token de refresco).
- Uso de la API. El servidor llama a la API de Google Calendar con el token de acceso y obtiene los eventos del usuario.
El callback del paso 4 se ve algo así:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
Y la respuesta con el token del paso 5 es JSON como este:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
El punto de diseño importante: el intercambio del token ocurre de servidor a servidor, así que el client secret y los tokens nunca necesitan pasar por el navegador.
OAuth vs OpenID Connect vs tu propio inicio de sesión
| Qué responde | Ejemplo | |
|---|---|---|
| OAuth 2.0 | «¿Qué puede hacer esta app en nombre del usuario?» (autorización) | Leer el calendario de un usuario |
| OpenID Connect (OIDC) | «¿Quién es este usuario?» (autenticación), construido sobre OAuth | «Inicia sesión con Google» devolviendo un correo verificado |
| Tu propio inicio de sesión | «¿Es esta la contraseña correcta de esta cuenta?» | Correo y contraseña guardados (con hash) en tu base de datos |
Muchas apps combinan los tres: inicio de sesión con correo y contraseña, más «Inicia sesión con Google» mediante OIDC, más conexiones OAuth separadas con otros servicios.
Términos clave
| Término | Significado |
|---|---|
| Proveedor / servidor de autorización | El servicio en el que el usuario inicia sesión y concede acceso: Google, Microsoft, GitHub. |
| Cliente | Tu app, tal como está registrada en el proveedor. |
| Client ID | El identificador público de tu app en el proveedor. |
| Client secret | La contraseña privada de tu app en el proveedor. Solo en el servidor. |
| Scope | Un permiso concreto, como «leer el calendario» o «ver la dirección de correo». |
| Pantalla de consentimiento | La página donde el usuario ve y aprueba los scopes solicitados. |
| URI de redirección / URL de callback | Adonde el proveedor devuelve al usuario. Debe registrarse de antemano y coincidir exactamente. |
| Token de acceso | Credencial de corta duración para llamar a la API. |
| Token de refresco | Credencial de mayor duración para obtener nuevos tokens de acceso. Guárdala como una contraseña. |
| ID token | En OIDC, un token firmado que describe quién es el usuario. |
| PKCE | Una comprobación extra («clave de prueba») que impide usar códigos interceptados. Recomendada para todos los clientes. |
| state | Un valor aleatorio que protege el flujo frente a solicitudes falsificadas. |
Malentendidos comunes
- «OAuth es un sistema de inicio de sesión». OAuth puro concede acceso; OpenID Connect se encarga de la identidad. Usar un token de acceso desnudo como prueba de quién es alguien ha causado fallos de seguridad reales.
- «La app obtiene mi contraseña». Nunca la obtiene. Ese es el punto.
- «Pedir más scopes no hace daño». Los usuarios desconfían de las solicitudes amplias, y proveedores como Google pueden exigir una revisión de la app para los scopes sensibles o restringidos. Pide solo lo que necesitas.
- «El client secret puede ir en el frontend». Todo lo que está en el código del navegador es público. Guárdalo en secretos del servidor.
- «Si funciona en pruebas, funcionará en producción». Los proveedores suelen limitar las apps no verificadas, por ejemplo, a usuarios de prueba listados, y la URI de redirección de tu dominio en vivo debe registrarse por separado.
- «Los tokens duran para siempre». Los tokens de acceso caducan rápido, y los usuarios pueden revocar el acceso. Tu app tiene que gestionar ambas cosas con elegancia.
Qué pedir a tu creador de apps con IA
- «Añade “Inicia sesión con Google” usando OpenID Connect con una biblioteca de autenticación bien mantenida; no escribas el flujo de OAuth a mano.»
- «Usa el flujo de código de autorización con PKCE y comprueba el parámetro
state.» - «Lee el client ID y el client secret de variables de entorno en el servidor.»
- «Pide solo los scopes que necesitamos: acceso de solo lectura al calendario.»
- «Dime cada URL de redirección que tengo que registrar en la consola del proveedor, para la vista previa, la URL publicada y mi dominio personalizado.»
- «Guarda los tokens de refresco cifrados en la base de datos, y cuando un token haya caducado o sido revocado, pide al usuario que vuelva a conectarse.»
- «Permite que los usuarios desconecten la integración desde su página de ajustes.»
OAuth y Mythex
Mythex no tiene inicio de sesión integrado para los usuarios finales de las apps que construyes; su documentación describe un enfoque de «trae tu propio proveedor»: eliges una biblioteca de autenticación o un proveedor alojado, guardas sus claves como secretos del proyecto, y el agente escribe el código. La receta para añadir autenticación tiene un prompt inicial para esto. También te encontrarás con OAuth en el propio Mythex: puedes registrarte con Google, conectar GitHub para sincronizar repositorios usa OAuth de GitHub, y los asistentes de IA que se conectan a Mythex por MCP pasan por una página de consentimiento OAuth. Para más información, consulta qué es la autenticación y qué es la autenticación de dos factores.
Preguntas
¿Qué es OAuth en términos sencillos?
OAuth es una forma estándar de que un usuario permita que una app acceda a su cuenta en otro servicio (como dejar que una app de citas lea su Google Calendar) sin entregarle su contraseña. El usuario aprueba permisos concretos, y la app recibe un token que solo puede usar para esos permisos.
¿OAuth es lo mismo que «Inicia sesión con Google»?
«Inicia sesión con Google» se construye sobre OAuth 2.0 más OpenID Connect, una capa encima de OAuth que añade una forma estándar de indicar a la app quién es el usuario. OAuth por sí solo trata de conceder acceso; OpenID Connect es lo que lo convierte en un inicio de sesión.
¿Qué es un token de acceso de OAuth?
Un token de acceso es una credencial que la app envía a la API de un servicio para demostrar que se le ha concedido acceso. Normalmente es de corta duración y se limita a los permisos (scopes) que aprobó el usuario. Un token de refresco, si se emite, permite a la app obtener nuevos tokens de acceso sin volver a preguntar al usuario.
¿Qué significa redirect_uri_mismatch?
Significa que la URL de callback que tu app envió durante el inicio de sesión no coincide exactamente con una registrada en la consola de desarrolladores del proveedor. Añade la URL exacta (incluido https, dominio, ruta y cualquier barra final) para cada dirección en la que se ejecute tu app.
¿OAuth es seguro?
OAuth 2.0 está muy extendido y es seguro si se implementa bien: usando el flujo de código de autorización con PKCE, URLs de redirección exactas, el parámetro state, y manteniendo el secreto de cliente y los tokens en el servidor. La mayoría de los problemas vienen de atajos de implementación, por eso se recomienda usar una biblioteca bien mantenida.