Tema 8

8. Identidad, autenticación federada y autorización entre servicios

En arquitecturas distribuidas la confianza depende de identidades verificables. Usuarios, APIs, servicios, jobs y componentes de plataforma necesitan demostrar quiénes son y operar con permisos acotados. Sin un modelo claro de identidad y autorización, la arquitectura pierde trazabilidad y se vuelve difícil de proteger.

Objetivo Construir confianza verificable entre actores
Enfoque Identidad, federación y permisos
Resultado Reducir permisos excesivos y confianza implícita

8.1 Introducción

Una de las preguntas más importantes en una arquitectura segura es simple: quién está actuando. La respuesta, sin embargo, no siempre es simple. En sistemas distribuidos puede haber usuarios humanos, clientes externos, APIs consumidoras, microservicios internos, jobs temporales, procesos de integración y componentes de infraestructura.

Cada uno de estos actores necesita algún tipo de identidad y algún conjunto de permisos. Si esas identidades no están bien definidas o si los permisos se asignan de forma amplia y opaca, aparecen problemas de trazabilidad, abuso interno, escalada de privilegios y dificultades para contener incidentes.

Este tema se centra en cómo se construye identidad verificable en microservicios, cómo funciona la autenticación federada y cómo se toman decisiones de autorización entre servicios sin depender de confianza implícita.

8.2 Identidad humana e identidad técnica

No todas las identidades representan personas. En arquitecturas modernas también existen identidades técnicas: servicios, contenedores, pods, tareas automatizadas, pipelines o integraciones de terceros que actúan sin intervención humana directa.

Tipo de identidad Ejemplos Riesgo principal si se gestiona mal
Humana Usuarios finales, administradores, operadores Suplantación, abuso de cuenta, errores operativos
Técnica Servicios, jobs, integraciones, agentes Permisos excesivos, baja trazabilidad, movimiento lateral
Federada Identidades provenientes de proveedores externos Confianza mal delegada o claims mal interpretados

Una arquitectura madura trata ambos tipos con rigor, pero distinguiendo claramente sus necesidades y riesgos.

8.3 Qué es autenticación

Autenticación es el proceso por el cual un actor demuestra su identidad. La pregunta que responde es: quién sos. En microservicios esta validación puede ocurrir en el borde, entre servicios internos, en plataformas de ejecución o durante flujos de integración con terceros.

La autenticación no dice por sí sola qué puede hacer ese actor. Solo establece una identidad verificable sobre la cual luego podrán aplicarse políticas de autorización.

Un actor autenticado no es necesariamente un actor autorizado. Esa diferencia debe quedar clara en todo diseño distribuido.

8.4 Qué es autenticación federada

La autenticación federada permite delegar la verificación de identidad en un proveedor confiable. En lugar de que cada servicio gestione credenciales propias de usuario, la identidad puede provenir de un sistema central o de un tercero confiable, como un proveedor corporativo o una plataforma de identidad.

Esto trae ventajas importantes:

  • Centraliza políticas de autenticación.
  • Reduce duplicación de gestión de usuarios.
  • Facilita integración con múltiples servicios y clientes.
  • Permite revocación y gobierno más consistente.

Pero también introduce un requisito: entender bien qué se está confiando, qué claims se consumen y qué controles siguen siendo responsabilidad de cada servicio.

8.5 Proveedores de identidad

Un proveedor de identidad o IdP es el componente que autentica actores y emite evidencia verificable sobre esa autenticación, por ejemplo tokens o assertions. En una arquitectura distribuida su papel es central, porque se convierte en la raíz de confianza para múltiples componentes.

Eso obliga a cuidarlo especialmente:

  • Su indisponibilidad puede impactar al sistema completo.
  • Su compromiso puede afectar múltiples dominios.
  • La calidad de los claims emitidos influye directamente en autorización.
  • Las integraciones con el IdP deben auditarse y versionarse cuidadosamente.

8.6 Identidad de workload

En microservicios, muchos accesos críticos no son ejecutados por usuarios humanos, sino por workloads. Una identidad de workload permite que un servicio demuestre quién es sin depender de credenciales estáticas distribuidas manualmente.

Este enfoque es preferible a compartir usuarios técnicos o secretos de larga vida porque mejora:

  • La trazabilidad entre servicio y acción.
  • La rotación y revocación de credenciales.
  • La asignación de permisos específicos por componente.
  • La resistencia frente a fuga de credenciales persistentes.

8.7 Propagación de identidad en flujos distribuidos

Una solicitud iniciada por un usuario puede atravesar varios servicios. En ese recorrido surge una decisión importante: cómo propagar la identidad original y cómo combinarla con la identidad del servicio que actúa en cada salto.

Existen varias estrategias, pero todas requieren cuidado:

  • Propagar claims mínimos del usuario para decisiones de negocio necesarias.
  • Hacer que cada servicio actúe con su propia identidad técnica.
  • Evitar copiar privilegios del usuario a todos los componentes sin control.
  • Registrar claramente qué actor original y qué servicio intermedio participaron.

8.8 Autorización entre servicios

La autorización responde otra pregunta: qué puede hacer esa identidad. En microservicios esto aplica tanto a usuarios como a servicios. Un servicio autenticado no debería poder consultar cualquier base, invocar cualquier API o publicar cualquier evento solo porque existe dentro del sistema.

La autorización entre servicios debería considerar:

  • Qué recurso intenta usar el servicio.
  • Qué acción concreta quiere ejecutar.
  • En qué contexto de negocio o entorno ocurre la solicitud.
  • Si la necesidad de acceso es persistente o temporal.

8.9 Permisos gruesos y permisos finos

No toda autorización necesita el mismo nivel de detalle. A veces alcanza con una política gruesa, como permitir que cierto servicio invoque una API específica. En otros casos hace falta una política fina, por ejemplo permitir leer ciertos recursos solo si pertenecen a un dominio o tenant concreto.

Nivel Ejemplo Riesgo si se usa mal
Grueso El servicio A puede llamar al servicio B Permisos demasiado amplios si el recurso es sensible
Fino El servicio A solo puede consultar órdenes del tenant X Complejidad si se modela sin criterio
Contextual Una acción solo se permite en cierto estado del proceso Errores si el contexto no se propaga o valida bien

8.10 Claims, scopes y atributos

Las decisiones de autorización suelen apoyarse en información asociada a la identidad: claims, scopes, roles, atributos o contexto del dominio. Esa información debe interpretarse con precisión. Leer mal un claim o asumir que un scope significa más de lo que realmente expresa puede abrir accesos no deseados.

Una buena práctica es mantener estos principios:

  • Usar claims mínimos y semánticamente claros.
  • No sobrecargar tokens con decisiones que pertenecen al dominio.
  • Separar identidad de política cuando la política cambia con frecuencia.
  • Auditar qué claims o atributos participan en decisiones críticas.

8.11 Delegación y confianza controlada

En algunos flujos un servicio actúa en nombre de un usuario o de otro servicio. Esa delegación debe modelarse explícitamente. Si se hace mal, se vuelve muy fácil que un componente termine usando privilegios que no le corresponden o que no quede claro quién tomó una acción.

La delegación segura requiere:

  • Definir cuándo un actor opera por sí mismo y cuándo representa a otro.
  • Limitar el alcance temporal y funcional de esa representación.
  • Registrar evidencia del actor original y del actor intermedio.
  • Evitar cadenas opacas de delegación imposibles de auditar.

8.12 Separación entre autenticación y lógica de negocio

Una arquitectura sana separa la verificación de identidad de las reglas de negocio. El proveedor de identidad puede decir quién es el actor, pero la decisión de negocio sobre qué puede hacer dentro de un dominio específico corresponde al servicio o al componente de autorización adecuado.

Cuando esto se mezcla, los tokens terminan cargando demasiada semántica y los servicios pierden claridad sobre dónde se toman realmente las decisiones.

8.13 Errores comunes

  • Usar cuentas técnicas compartidas entre múltiples servicios.
  • Confiar en claims sin verificar origen, firma o vigencia.
  • Propagar la identidad original sin filtrar privilegios innecesarios.
  • Asignar permisos amplios para evitar complejidad operativa.
  • No registrar qué identidad tomó qué acción en flujos encadenados.
Muchos problemas de autorización no aparecen por falta de autenticación, sino por identidades mal modeladas y permisos demasiado amplios.

8.14 Principios prácticos de diseño

  • Cada servicio debería tener identidad propia y auditable.
  • Las identidades humanas y técnicas deben diferenciarse claramente.
  • La autorización debe evaluarse lo más cerca posible del recurso sensible.
  • Los permisos deben ser acotados, revocables y revisables.
  • La propagación de identidad debe minimizar datos y privilegios transferidos.

8.15 Qué debes recordar de este tema

  • La identidad es la base de la confianza verificable en sistemas distribuidos.
  • La autenticación federada centraliza verificación, pero no reemplaza autorización de dominio.
  • Los workloads también necesitan identidades fuertes, no solo los usuarios humanos.
  • La autorización entre servicios debe limitar recursos, acciones y contexto.
  • Permisos amplios y cuentas compartidas destruyen trazabilidad y facilitan abuso.

8.16 Conclusión

Una arquitectura distribuida solo puede considerarse madura cuando sabe responder con claridad quién está actuando, qué evidencia respalda esa identidad y qué permisos concretos tiene en cada contexto. La autenticación federada, la identidad de workload y la autorización bien modelada permiten construir esa confianza de forma escalable y auditable.

En el próximo tema profundizaremos en OAuth2, OpenID Connect, JWT y manejo seguro de tokens para ver cómo estos mecanismos materializan gran parte de la identidad y autenticación modernas.