Contenido del curso

Buenas prácticas de OAuth y cuándo no usarlo

Resumen

Implementar Open Authorization bien hecho marca la diferencia entre una app que genera confianza y una que expone a sus usuarios. Aquí tienes las buenas prácticas clave para configurar clientes OAuth, proteger credenciales, manejar tokens y, sobre todo, decidir cuándo no usar este protocolo en tu proyecto.

¿Cómo configurar correctamente un cliente OAuth?

Cuando creas un cliente, cada decisión cuenta. Desde el nombre hasta los permisos que pides, todo influye en la percepción del usuario y en la seguridad de tu aplicación.

Lo primero: pide solo los scopes necesarios. Si tu app necesita leer el correo, no pidas también acceso a contactos y calendario. Pedir más datos de los que vas a usar asusta a los usuarios y baja la tasa de aceptación en la pantalla de request consent.

El nombre y la descripción del cliente también importan. Asegúrate de que:

  • El nombre indique si es la web app o la versión mobile.
  • La descripción explique con claridad para qué se usará ese cliente.
  • El nombre se vea profesional, porque aparece en la pantalla de consentimiento.

¿Qué son los scopes en OAuth? Son los permisos específicos que tu cliente solicita al usuario, como leer el perfil o acceder al correo. Pide solo los que realmente vas a usar.

¿Por qué nunca debes exponer el client secret?

El client ID puede ser público sin problema, pero el client secret es sagrado. Funciona como la contraseña de tu cliente: si alguien lo obtiene, puede hacerse pasar por tu aplicación.

Por eso, las variables sensibles como el secret deben moverse a variables de entorno y nunca subirse al repositorio. Esa es una regla que no admite excepciones.

Antes de pasar a producción, verifica con el servicio que estás integrando si tu cliente cumple los requisitos: URL válida, términos y condiciones, política de privacidad. Si no los cumples, el servicio puede bloquear requests o aplicarte límites silenciosos.

¿Dónde almacenar los tokens de OAuth de forma segura?

Los tokens son la llave de acceso del usuario, así que su almacenamiento no es un detalle menor. Guárdalos en una cookie segura del lado del servidor o, si no es posible usar cookies, en memoria.

Evita guardarlos en localStorage o lugares accesibles desde el navegador sin protección, porque cualquier script malicioso podría leerlos.

¿Qué pasa cuando un token expira?

No dejes al usuario en un callejón sin salida. Implementa un middleware del lado del cliente que escuche errores y reaccione a tiempo.

  • Detecta respuestas con código 401 (no autorizado) u otros errores de expiración.
  • Muestra un mensaje claro al usuario indicando que perdió la sesión.
  • Redirige al login o usa soluciones como refresh token o silent authentication.

¿Qué es un refresh token? Es un token que permite obtener un nuevo access token sin pedirle al usuario que vuelva a autenticarse, manteniendo la sesión activa de forma transparente.

Esa capa de manejo de errores convierte una experiencia frustrante en una transición fluida.

¿Cuándo no deberías implementar OAuth en tu proyecto?

OAuth es poderoso, pero no siempre es la herramienta correcta. Hay escenarios donde implementarlo se vuelve sobre ingeniería: estás resolviendo problemas que tu aplicación no tiene.

Considera evitar OAuth si:

  • Tu proyecto no pretende escalar a clientes terceros. Si es un prototipo o una app pequeña, el costo de implementación supera el beneficio.
  • Solo necesitas autenticación (lo que cubre OpenID Connect) y tu framework ya trae una solución built in. Usar la solución nativa será más barato y tendrás más documentación a mano.
  • Tu caso de uso solo requiere flujos como client credentials o resource owner password. Estos se pueden resolver almacenando tokens en una base de datos sin necesidad del protocolo completo.

Algunas personas implementan OAuth desde el inicio porque ya lo dominan y saben que escalar a terceros será corto. Esa es una decisión válida si el contexto lo justifica, no si lo haces por inercia.

¿Qué diferencia hay entre OAuth y OpenID Connect?

OAuth es un protocolo de autorización: define qué puede hacer un cliente con los recursos del usuario. OpenID Connect es una capa de autenticación construida sobre OAuth: confirma quién es el usuario.

Si solo necesitas saber quién entra a tu app, no necesitas todo el aparato de autorización que OAuth incluye.

Cómo generar confianza con una buena implementación

La confianza del usuario se construye en los detalles. Un cliente bien nombrado, con scopes mínimos y una descripción clara, comunica profesionalismo desde la pantalla de consentimiento.

Proteger el client secret, manejar tokens con cuidado y reaccionar bien ante expiraciones son las prácticas que diferencian una integración madura de una improvisada.

Y recuerda: si OAuth no resuelve un problema real de tu aplicación o si estás cubriendo problemas hipotéticos, probablemente estés sobreingenierizando. Mejor empieza simple y escala cuando lo necesites.

¿En qué casos crees que OAuth sería contraproducente para un proyecto? Déjalo en los comentarios con ejemplos concretos.