Skip to content

Imagy Identity — Overview

Proposito

Imagy Identity es el dominio de autenticacion, autorizacion y gestion de tenants de la plataforma Imagy. Es el unico dominio actualmente en produccion y sirve como punto de entrada para todos los demas servicios. Consta de dos servicios complementarios: Identity Gateway (BFF, OIDC, reverse proxy) e Identity Management (CRUD de tenants, usuarios, roles, organizaciones).

Estado

Funcional — En produccion.

Servicios

ServicioRepositorioPuertoBase de DatosDescripcion
Identity Gatewayimagy-identity-gateway5001— (stateless, sesiones en Redis)API Gateway, BFF, OIDC + PKCE, YARP reverse proxy
Identity Managementimagy-identity-management4000imagy_identityTenant Management, Control Plane, Keycloak Admin API

Arquitectura

Responsabilidades

Identity Gateway (imagy-identity-gateway)

ResponsabilidadDescripcion
Autenticacion OIDC + PKCEPatron BFF — el frontend nunca maneja tokens directamente
SesionesCookies httpOnly en Redis/Valkey con TTL configurable
Reverse ProxyYARP enruta requests a servicios internos con JWT propagado
JWT PropagationPropaga el JWT completo a downstream (no headers custom)
Tenant RoutingResuelve tenant por subdominio, header X-Tenant-Slug, o query param
Rate LimitingLimites por IP, por tenant y por endpoint
Security HeadersHSTS, CSP, X-Frame-Options, X-Content-Type-Options
CORSConfiguracion por tenant (origenes permitidos)
Back-channel LogoutInvalida sesiones cuando Keycloak notifica logout
Health ChecksEndpoints de salud para ALB y monitoring

Identity Management (imagy-identity-management)

ResponsabilidadDescripcion
CRUD TenantsOnboarding, suspension, configuracion, eliminacion logica
CRUD UsuariosCrear, listar, actualizar, desactivar usuarios dentro de un tenant
CRUD RolesDefinir roles con permisos granulares por modulo
OrganizacionesGestion via Keycloak Organizations API (sub-agrupaciones dentro del tenant)
Delegated AdminAdministradores que gestionan multiples tenants
Temas VisualesBranding por tenant (logo, colores, favicon, CSS custom)
Clientes OIDC/SAMLConfiguracion de clientes de autenticacion por tenant
ModulosActivar/desactivar modulos (ImagFlow, ImagLend, ImagSign) por tenant
Publicacion de EventosPublica eventos de ciclo de vida (user.created, tenant.created, etc.)

Modelo de Multi-Tenancy

Identity implementa el patron realm-per-tenant en Keycloak:

Principios:

  • Cada tenant tiene su propio realm en Keycloak (aislamiento total de credenciales)
  • Los platform admins viven en el Master realm
  • Identity Management usa la Keycloak Admin API para gestionar realms programaticamente
  • Los usuarios de un tenant no pueden ver ni acceder a otros tenants
  • Las organizaciones (Keycloak Organizations API) permiten sub-agrupaciones dentro de un tenant

Flujo de Autenticacion

Actores

ActorDescripcionRealm
Platform AdminAdministra la plataforma completa, crea tenants, configura globalmenteMaster
Delegated AdminAdministra uno o mas tenants asignadosMaster (con scope limitado)
Tenant AdminAdministra su propio tenant (usuarios, roles, config)Tenant realm
OperatorOpera dentro de un tenant (consulta, ejecuta acciones)Tenant realm
End UserUsuario final que interactua con apps publicasTenant realm

Integracion con Otros Dominios

Identity es consumido por todos los demas dominios de la plataforma:

DominioComo usa Identity
ImagFlowJWT para autenticacion, IIdentityContext para RLS, tenant routing
ImagLendJWT, IIdentityContext, registro de usuario en pipeline (user_registration step)
ImagSignJWT, IIdentityContext, verificacion de identidad del firmante
ImagIDConsume evento identity.user.created para crear perfil de sujeto
imagy-notificationsJWT para APIs admin, tenant context para templates
imagy-auditConsume eventos de login/logout, registra acciones de Identity

Registro de Usuario en Pipeline (ImagLend)

Cuando un usuario solicita un credito por primera vez, el pipeline de originacion puede crear automaticamente un usuario en el realm del tenant:

Ver ADR-010: User Registration in Pipeline.

Repositorios

  • Gateway: imagy-identity-gateway — .NET 8, YARP, Keycloak OIDC, Redis
  • Management: imagy-identity-management — .NET 8, EF Core, Keycloak Admin API, MediatR
  • Base de datos: imagy_identity
  • Equipo: Team Identity / Team Platform

Documentos Relacionados

Reimagine Tech LLC — Documentacion Interna