Saltar al contenido principal

Autorización de apps: guía para desarrolladores en 2026

Aprende los fundamentos de la autorización de apps. Esta guía cubre OAuth 2.0, mejores prácticas de seguridad y patrones de implementación para apps de Capacitor y Electron.

Autorización de apps: guía para desarrolladores (2026)

Probablemente ya estés lidiando con esto. El login de la app funciona, los usuarios pueden iniciar sesión con Google, Microsoft o correo electrónico, y API acepta un token. Entonces empiezan las preguntas clave. ¿Puede este usuario ver facturas de otra cuenta? ¿Debería la app de escritorio cachear un token de acceso localmente? ¿Cómo manejas el consentimiento en un build de Capacitor sin filtrar estado entre la webview y la capa nativa?

Es ahí donde la autorización de la app deja de ser una casilla por marcar y empieza a afectar la confianza en el producto, la respuesta ante incidentes y los resultados de las revisiones en las tiendas de aplicaciones. En apps cross-platform, especialmente con Capacitor y Electron, lo difícil no es entender el concepto de autorización. Es implementarlo en entornos donde las suposiciones del navegador ya no aplican, el almacenamiento seguro se comporta de forma distinta en cada plataforma y los atajos en el cliente generan riesgos a nivel de servidor.

Tabla de contenidos

Qué significa realmente la autorización de apps

Un usuario instala tu app, toca “Continue with Google”, inicia sesión correctamente y luego aparece una pantalla de consentimiento que pregunta si la app puede leer sus contactos o datos del calendario. Ese momento reúne las dos caras del acceso. El inicio de sesión confirma la identidad. La pantalla de consentimiento define qué puede hacer la app una vez conocida la identidad.

Esa distinción sigue confundiendo a muchos equipos. Autenticación demuestra quién es el usuario. Autorización decide a qué puede acceder ese usuario, sesión o app. Un ID te permite entrar al edificio. Una llave determina qué puertas se abren.

En el desarrollo de apps, esa diferencia importa porque los equipos suelen proteger el flujo de login y luego se quedan cortos en todo lo que sigue. Confían demasiado en un token, omiten validaciones de permisos en el servidor o dejan que el cliente gestione reglas de acceso que deberían estar en una política. Así es como “el usuario está logueado” se convierte sutilmente en “el usuario tiene acceso a demasiado”.

La autorización es donde la confianza se vuelve tangible. A los usuarios no solo les importa que tu app sepa quiénes son. Les importa que solo toque lo que ellos aprobaron.

Hay tres actores que debes distinguir:

  • El usuario que inicia sesión y puede dar su consentimiento.
  • La aplicación que solicita el acceso en nombre del usuario.
  • El propietario del recurso o API que protege los datos y aplica la decisión.

En la práctica, la autorización de apps también se solapa con controles de acceso más estrictos, como MFA. A enero de 2023, alrededor del 66% de los usuarios en todo el mundo usaban MFA, y el 83% de más de 1.000 profesionales de IT de pymes encuestados requería MFA para acceder a todos los recursos de la empresa en una encuesta de JumpCloud de 2024 according to Resumen de estadísticas de MFA de JumpCloud. Eso no sustituye la autorización, pero sí eleva el umbral base de quién puede solicitar acceso en primer lugar.

Si tu equipo está organizando roles, alcances y acceso delegado, esta guía sobre cómo RBAC protege las actualizaciones OTA en apps de Capacitor es un complemento útil para las opciones de implementación discutidas aquí.

Los pilares de la autorización

Autorizar es mucho más fácil cuando dejas de verlo como magia dentro de un token. Un mejor modelo mental es un hotel.

Una tarjeta de hotel es un buen modelo mental

Un huésped se acerca a la recepción y muestra su identificación. El hotel verifica su identidad, crea un registro de estancia y emite una tarjeta de habitación. Esa tarjeta no demuestra quién es el huésped cada vez que se abre una puerta. Concede permiso para acceder a lugares específicos durante un período limitado.

Tu app funciona de la misma manera.

Un diagrama que ilustra los conceptos clave de la autorización, incluidos los componentes de usuario, recurso, política, decisión y enforcer.

El punto clave es que la tarjeta no es la política. Refleja la política. Las puertas aún necesitan un sistema que verifique si la tarjeta debe abrir esa cerradura específica. En software, eso es tu gateway de API, middleware de backend, motor de políticas o capa de autorización a nivel de servicio.

Términos clave en sistemas reales

Principal
El actor que solicita acceso. Normalmente es un usuario, pero también puede ser un dispositivo, un trabajo en segundo plano o una cuenta de servicio.

Recurso
Lo que se protege. Un proyecto, una factura, una ruta de administración, un archivo, un endpoint de API o un registro individual en una base de datos.

Alcance
El conjunto de acciones solicitadas. Leer perfil. Subir archivos. Gestionar facturación. Los scopes deben ser estrechos y comprensibles.

Consentimiento
Aprobación del usuario para el nivel de acceso solicitado. Las pantallas de consentimiento adecuadas hacen que la solicitud sea clara. Las malas piden todo.

Token de acceso
La credencial que el cliente presenta a un servidor de recursos tras la autorización. Debe tratarse como datos sensibles.

Muchos errores de implementación surgen de reducir todo eso a una sola suposición: “el usuario tiene un token, así que déjalo entrar”. Eso no se sostiene en producción. Un token puede ser válido pero seguir siendo incorrecto para la acción, el tenant, el entorno o el recurso actuales.

Para equipos de móvil y escritorio, el manejo de tokens merece especial atención porque el almacenamiento forma parte del sistema de autorización, te guste o no. Si el cliente almacena los artefactos de acceso sin cuidado, tu diseño de políticas no te salvará después. Esta guía sobre almacenamiento seguro de tokens para desarrolladores móviles vale la pena revisarla antes de publicar.

Una regla duradera es simple. Mantén la autenticación, el consentimiento, la emisión de tokens y la aplicación en el servidor separados en tu mente y en tu code. Los equipos que los mezclan suelen terminar depurando errores de permisos en la capa equivocada.

Modelos y protocolos de autorización comunes

Cuando los equipos dicen “usamos OAuth”, a menudo se refieren a varias cosas diferentes a la vez. Eso forma parte de la confusión. Los protocolos y los modelos de autorización resuelven problemas distintos.

Los protocolos gestionan la conversación

OAuth 2.0 se centra principalmente en la autorización delegada. Define cómo una app puede solicitar y recibir permiso para actuar en nombre de un usuario sin gestionar directamente la contraseña del usuario.

OpenID Connect, o OIDC, se basa en OAuth 2.0 y añade información de identidad. En la práctica, OAuth responde a «¿qué puede hacer esta app?», mientras que OIDC ayuda a responder «¿quién inició sesión?».

Esa diferencia es importante en Capacitor y apps de Electron, porque muchos bugs empiezan por usar un ID token donde se espera un access token, o por asumir que un inicio de sesión exitoso significa que API debe conceder cada acción downstream. No debería ser así.

Si lo estás integrando en una app híbrida, paso a paso de implementación de OAuth2 para apps Capacitor es el tipo de recurso que evita muchos errores de flujo que se pueden evitar.

Los modelos gestionan la lógica de decisión

En tu propio sistema, aún necesitas reglas para decidir si se concede el acceso. Ahí es donde RBAC y ABAC entran en juego.

Control de acceso basado en roles (RBAC) mapea permisos a roles como admin, editor, agente de soporte o viewer. Es común porque es comprensible, auditable y relativamente estable. Según el análisis de BrightSec sobre autenticación y autorización seguras, RBAC es el mecanismo estándar de la industria para aplicar permisos granulares, y la evidencia citada allí indica que implementar RBAC con estructuras jerárquicas de roles y auditorías periódicas de permisos reduce los incidentes de seguridad hasta un 40% en entornos empresariales.

Control de Acceso Basado en Atributos (ABAC) toma decisiones usando atributos en lugar de solo roles. Esto puede incluir departamento, estado del dispositivo, propiedad del registro, nivel de cuenta, geografía, hora de la solicitud o si la sesión pasó MFA. ABAC es más expresivo, pero también es más fácil que se vuelva opaco si no documentas bien la política.

Regla práctica: Empieza con RBAC cuando los permisos de tu producto son estables y legibles. Añade ABAC donde el contexto cambia realmente la decisión.

RBAC vs. ABAC de un vistazo

Criterio Control de acceso basado en roles (RBAC) Control de acceso basado en atributos (ABAC)
Idea central El acceso se otorga por rol El acceso se otorga evaluando atributos
Mejor opción Herramientas internas, dashboards, paneles de admin Apps multi-tenant, flujos regulados, acceso por contexto
Facilidad de razonamiento Más fácil de entender para equipos y auditores Más flexible, pero más difícil de debuguear
Gestión de cambios Añadir o modificar roles Ajustar políticas y reglas de atributos
Modo de fallo común Exceso de roles Proliferación de políticas y casos límite ocultos
Ejemplo “Los agentes de soporte pueden ver tickets” “Los agentes de soporte pueden ver tickets de cuentas en su región durante sus turnos activos”

No hay premio por elegir el modelo más avanzado. La mejor opción es la que tu equipo pueda aplicar de forma consistente. En la mayoría de los codebases, esto significa usar RBAC para límites de acceso amplios y atributos específicos para excepciones como propiedad, tenant o estado del dispositivo.

Anatomía de un flujo OAuth 2.0

Muchas explicaciones de OAuth son demasiado abstractas. En una app real, la secuencia importa, especialmente para clientes públicos como Capacitor y apps de Electron que no pueden guardar un client secret de forma segura.

Qué sucede cuando el usuario toca iniciar sesión

Un usuario abre tu app Capacitor y toca “Iniciar sesión con GitHub”. La app crea un PKCE code verifier y un code challenge derivado, y luego redirige al usuario al servidor de autorización en un navegador del sistema o una pestaña de navegador segura. La app también incluye el parámetro state para verificar que la respuesta corresponde a la petición que inició.

Diagrama que ilustra los ocho pasos del flujo de autorización OAuth 2.0 con PKCE para la autenticación segura de aplicaciones.

En el servidor de autorización, el usuario inicia sesión si es necesario y aprueba el acceso solicitado. Después, el servidor redirige de vuelta con un code de autorización, no con una credencial de larga duración que puedas usar directamente. Tu app recibe ese code a través de la redirect URI configurada.

La app intercambia luego el code por tokens. PKCE es crítico en este proceso. La app envía el verificador code original junto con el code de autorización. El servidor lo compara con el desafío code anterior. Si coinciden, el intercambio de tokens tiene éxito. Si alguien interceptó el code pero no tiene el verificador, el intercambio falla.

Por eso PKCE es esencial para clientes nativos e híbridos. Estas apps son clientes públicos. Debes asumir que los atacantes pueden inspeccionar bundles, hacer ingeniería inversa de las rutas de code o manipular el estado local. PKCE reduce uno de los riesgos más comunes en los flujos basados en redirección.

Aquí tienes una breve guía visual por si quieres repasar antes de implementar la secuencia en code:

Dónde suelen fallar las apps multiplataforma

El protocolo es sencillo. La implementación a menudo no lo es.

Las apps de Capacitor suelen fallar en uno de estos puntos:

  1. Usar un webview integrado para el inicio de sesión en lugar del navegador del sistema. Eso puede comprometer el límite de seguridad esperado y crear un comportamiento de cookies inconsistente.
  2. Perder el estado de la redirección cuando la app se reanuda desde el navegador de vuelta a la shell nativa.
  3. Almacenar tokens en el almacenamiento plano del navegador porque el proyecto empezó como una web app y el equipo nunca revisó el almacenamiento para móvil.

Las apps de Electron tienen un conjunto de problemas distinto. A veces, los equipos dejan que el proceso renderer gestione demasiada lógica de auth, exponen tokens a través de IPC sin límites estrictos o tratan la app de escritorio como un entorno de confianza. No lo es. Una app de escritorio empaquetada sigue necesitando una mentalidad de cliente hostil.

El comportamiento del refresh también merece un diseño deliberado. Los access tokens deben expirar, las sesiones deben recuperarse sin problemas y la lógica de refresh no debe crear race conditions entre varias peticiones concurrentes. Esta guía del flujo seguro de refresh de tokens es una referencia sólida para construir esa parte sin terminar en un bucle de reintentos o en un lío de sesiones caducadas.

Un hábito de implementación ayuda más que la mayoría: mantén el handshake de OAuth aislado en un módulo de auth pequeño con inputs y outputs explícitos. No disperses el manejo de redirects, el parsing de tokens y la lógica de refresh entre componentes, hooks y utilidades de red aleatorias.

Amenazas de seguridad y mejores prácticas esenciales

Los bugs de autorización rara vez parecen dramáticos en una revisión de code. Parecen comodidades. Un scope amplio aquí, un token en caché allá, o un check de servidor omitido porque la UI ya oculta el botón. Luego la app se publica y esos atajos se convierten en la superficie de ataque.

Los fallos que se repiten constantemente

El ecosistema móvil ofrece una señal de advertencia útil. Según las estadísticas de seguridad móvil de DeepStrike, el 95% de las apps móviles probadas fallaron al menos un control de OWASP MASVS relacionado con autenticación y autorización, y El 85% de las apps móviles analizadas tenían fallos de seguridadNo hace falta aceptar todo el discurso del marketing de seguridad para tomar en serio lo esencial. Los errores de autorización son comunes.

Una infografía titulada Authorization Security Checklist que detalla nueve prácticas esenciales para mantener controles de acceso seguros en aplicaciones digitales.

Los patrones son conocidos:

  • Tokens filtrados desde almacenamiento inseguro, logs, crash reports o estado accesible por el renderer.
  • Scopes demasiado amplios porque pedirlo todo es más fácil que evolucionar el consentimiento con el tiempo.
  • Validación en el cliente donde la app oculta acciones no autorizadas, pero el API las sigue aceptando.
  • Ataques de replay y redirect cuando la validación de state, PKCE o la redirect URI es deficiente.
  • Desviación de permisos cuando los equipos añaden roles y excepciones sin revisiones programadas.

Si tu backend no verifica la autorización en cada acción protegida, no tienes autorización de app. Solo tienes pistas en la UI.

Un checklist práctico y sólido

Usa el principio de mínimo privilegio por defecto, no como una tarea de limpieza posterior. En proyectos reales, esto significa reducir qué puede hacer cada token, dónde reside cada token y cuánto tiempo es útil cada credencial.

  • Solicita scopes limitados: Pide solo los permisos necesarios para la funcionalidad que el usuario está usando en ese momento. Si la app puede posponer el consentimiento, hazlo.
  • Aplica la autorización en el servidor: Trata al cliente como no confiable. Los botones, rutas y pantallas ocultas no son límites de seguridad.
  • Usa el almacenamiento seguro de la plataforma: En móvil, usa el acceso nativo al keychain o keystore mediante un plugin en lugar de local storage plano. En desktop, mantén el material sensible fuera del alcance fácil del renderer.
  • Valida el estado y el manejo de redirecciones: La respuesta de autenticación debe coincidir con la solicitud iniciada por tu app.
  • Expira de forma agresiva y actualiza con cuidado: Los tokens de acceso de vida corta limitan el daño si se filtran. La lógica de refresh debe rotar de forma limpia y fallar de manera segura.
  • Revoca cuando sea necesario: La terminación de sesiones y la respuesta a incidentes deben incluir la capacidad de invalidar tokens y forzar la reautenticación.
  • Valida las entradas y protege el transporte: HTTPS, certificate pinning cuando corresponda y validación de entradas son clave, ya que la autorización puede verse comprometida por vulnerabilidades adyacentes.

Para equipos que publican apps en tiendas, el diseño de autenticación también se cruza con la exposición de API y la revisión de cumplimiento. Este resumen de estándares de seguridad de API para el cumplimiento de tiendas de apps encaja bien junto a tu checklist de autorización.

Un punto final que suele pasarse por alto. El principio de menor privilegio también aplica a las herramientas internas. El panel de administración, la consola de soporte y la app de staging suelen terminar con los controles más laxos de la empresa, a pesar de que a menudo exponen las acciones más sensibles.

Patrones de implementación para Capacitor y Electron

La autorización en apps multiplataforma se vuelve más sencilla cuando dejas de tratar tu app como un navegador con empaquetado extra. Capacitor y Electron requieren patrones que respeten el almacenamiento nativo, los límites de proceso y el manejo de redirecciones.

Un joven desarrollador concentrado trabajando en un portátil con code en los monitores, en un entorno de oficina luminoso.

Patrones de Capacitor que funcionan

Para Capacitor, usa un plugin o librería de autenticación que soporte OAuth con PKCE en el navegador del sistema y un callback adecuado mediante deep-link o app-link. Librerías como capacitor-oauth2 pueden eliminar mucho code de pegamento, pero solo si mantienes explícitos el almacenamiento de tokens y el comportamiento de refresco.

Una estructura práctica se ve así:

  • Coordinador de autenticación: Inicia el login, rastrea el estado y gestiona el callback.
  • Servicio de tokens: Guarda los tokens en almacenamiento seguro nativo, no en el almacenamiento del navegador.
  • Cliente de API: Adjunta tokens de acceso, reintenta una vez al refrescar y fuerza el cierre de sesión si el fallo es irrecuperable.
  • Backend con conocimiento de políticas: Mapea las claims del token a las comprobaciones de autorización en el servidor.

También necesitas herramientas de sesión que se adapten al ciclo de vida de una app híbrida. Si estás evaluando opciones para esa capa, plugins de Capacitor para la gestión segura de sesiones es un buen lugar para comparar enfoques.

Una forma mínima de actualización de token en pseudocódigo se ve así:

async function authorizedFetch(request) {
  let token = await tokenStore.getAccessToken()
  let response = await api(request, token)

  if (response.status !== 401) return response

  const refreshed = await auth.refresh()
  if (!refreshed) {
    await auth.signOut()
    throw new Error('Session expired')
  }

  token = await tokenStore.getAccessToken()
  return api(request, token)
}

Lo importante no es la sintaxis. Es mantener la actualización centralizada para que cada pantalla no invente su propio comportamiento de sesión.

Patrones de Electron que requieren cuidado extra

Electron necesita límites más estrictos. Mantén el intercambio de tokens y el almacenamiento seguro en el proceso principal cuando sea posible. Expón métodos IPC estrechos al renderer en lugar de entregarle tokens crudos y esperar que se comporte.

Las apps de escritorio parecen más controlables que las móviles. Trata esa sensación como un riesgo, no como una garantía.

Evita estos atajos:

  • No almacenes tokens en almacenamiento local accesible por el renderer si puedes evitarlo.
  • No dejes que cada ventana comparta un contexto de autenticación amplio sin verificar el propósito de la ventana y la duración de la sesión.
  • No confíes demasiado en los scripts de preload como sustituto del aislamiento de procesos y las fronteras explícitas de API.

La visibilidad operativa también es importante. Según Resumen de Splunk sobre los requisitos de seguridad de aplicaciones, la autorización de aplicaciones debe integrarse con el monitoreo continuo de actividad y el registro de eventos, y los datos de referencia citados allí indican que las organizaciones que registran y monitorean proactivamente los eventos de autorización detecta el 95% de los intentos de acceso no autorizado en 15 minutosEn la práctica, esto implica registrar acciones denegadas, fallos en la renovación de tokens, cambios de roles, revocaciones de consentimiento y patrones inusuales de acceso a recursos.

Si tu proceso de lanzamiento incluye actualizaciones de aplicaciones híbridas, una opción en este ecosistema es Capgo, que proporciona actualizaciones en vivo firmadas para Capacitor y aplicaciones Electron. Eso no implementa la autorización por ti, pero sí afecta la rapidez con la que puedes lanzar correcciones cuando la lógica de autenticación, el manejo de redirecciones o la sesión code necesita una corrección urgente.

Tu camino hacia una autorización segura de apps

Una buena autorización de apps no es una sola decisión. Es una cadena de decisiones que deben sostenerse juntas. Autenticas al usuario correctamente, solicitas solo el acceso que necesitas, intercambias tokens a través de un flujo seguro como OAuth 2.0 con PKCE, almacenas los secretos en el lugar adecuado y aplicas permisos en el servidor cada vez.

La parte que más importa para equipos de Capacitor y Electron es la disciplina en los bordes. Los atajos de la era del navegador no sobreviven al contacto con almacenamiento nativo, deep links, límites de procesos de escritorio o requisitos de revisión de apps. Los equipos que evitan problemas normalmente no hacen nada exótico. Solo son consistentes con scopes, manejo de sesiones, comprobaciones en el servidor y auditabilidad.

Si tu configuración de auth actual se siente enredada, es normal. Empieza por ajustar un límite a la vez. Corrige el flujo. Corrige el almacenamiento. Mueve las reglas de acceso fuera de la UI. Añade logging que te indique cuando alguien pide algo que no debería tener.

Así es como la autorización segura de apps se vuelve manejable. No más simple en teoría. Más segura en code.


Capgo ayuda a los equipos a publicar correcciones en apps de Capacitor y Electron sin esperar a la revisión de la tienda, lo cual importa cuando necesitas corregir flujos de auth, manejo de tokens o bugs de sesión rápidamente. Si tu equipo quiere un control más estricto sobre releases multiplataforma, rollouts dirigidos y soporte de rollback, Capgo vale la pena evaluarlo junto con tu stack de autorización de apps.

Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.