Skip to content

Instantly share code, notes, and snippets.

@sazardev
Last active September 8, 2025 22:12
Show Gist options
  • Select an option

  • Save sazardev/4008e7f93f80f69026f5e81de2484854 to your computer and use it in GitHub Desktop.

Select an option

Save sazardev/4008e7f93f80f69026f5e81de2484854 to your computer and use it in GitHub Desktop.

Visualización de Procesos de Autenticación y Control de Licencias

1. FLUJO PRINCIPAL DE AUTENTICACIÓN

Este diagrama muestra el proceso completo desde que un usuario intenta acceder hasta que obtiene una sesión válida:

flowchart TD

    A[Usuario solicita acceso] --> B{¿RFC empresa válido?}

    B -->|No| C[Error: Empresa no encontrada]

    B -->|Sí| D{¿Usuario existe en empresa?}

    D -->|No| E[Error: Usuario no autorizado]

    D -->|Sí| F{¿Credenciales correctas?}

    F -->|No| G[Incrementar contador fallos]

    G --> H{¿Excede límite intentos?}

    H -->|Sí| I[Bloquear IP temporalmente]

    H -->|No| J[Aplicar demora progresiva]

    J --> K[Permitir nuevo intento]

    F -->|Sí| L[Generar huella digital dispositivo]

    L --> M{¿Dispositivo conocido?}

    M -->|No| N[Registrar nuevo dispositivo]

    M -->|Sí| O[Validar consistencia dispositivo]

    N --> P{¿Excede límite dispositivos?}

    P -->|Sí| Q[Solicitar aprobación administrativa]

    P -->|No| R[Proceder con autenticación]

    O --> S{¿Dispositivo consistente?}

    S -->|No| T[Activar validaciones adicionales]

    S -->|Sí| R

    R --> U[Verificar disponibilidad licencias]

    T --> U

    Q --> U

    U --> V{¿Licencias disponibles?}

    V -->|No| W[Error: Sin licencias disponibles]

    V -->|Sí| X[Reservar licencia temporalmente]

    X --> Y{¿Sesión previa activa?}

    Y -->|Sí| Z[Terminar sesión anterior]

    Y -->|No| AA[Crear nueva sesión]

    Z --> AA

    AA --> BB[Confirmar asignación licencia]

    BB --> CC[Establecer conexión WebSocket]

    CC --> DD[Iniciar heartbeat bidireccional]

    DD --> EE[Sesión activa establecida]

    C --> FF[Fin: Acceso denegado]

    E --> FF

    I --> FF

    W --> FF

    EE --> GG[Fin: Acceso concedido]

Loading

2. GESTIÓN DINÁMICA DE LICENCIAS

Este diagrama ilustra cómo el sistema maneja los cambios en tiempo real del número de licencias disponibles:

flowchart TD

    A[Sistema detecta cambio en licencias] --> B{¿Tipo de cambio?}

    B -->|Aumento| C[Actualizar límite disponible]

    C --> D[Notificar usuarios en cola de espera]

    D --> E[Permitir nuevas autenticaciones]

    B -->|Reducción| F[Calcular sesiones excedentes]

    F --> G{¿Hay excedentes?}

    G -->|No| H[Solo actualizar límite]

    G -->|Sí| I[Identificar sesiones a terminar]

    I --> J[Aplicar política FIFO]

    J --> K[Notificar usuarios afectados<br/>60 segundos previos]

    K --> L[Mostrar mensaje de desconexión]

    L --> M[Esperar tiempo gracia]

    M --> N[Terminar sesiones seleccionadas]

    N --> O[Liberar licencias]

    O --> P[Actualizar contadores]

    H --> Q[Fin: Límites actualizados]

    E --> Q

    P --> Q

Loading

3. CONTROL DE ESTADOS DE SESIÓN

Este diagrama muestra la máquina de estados de una sesión y sus transiciones:

stateDiagram-v2

    [*] --> Creando

    Creando --> Activa : Licencia asignada exitosamente

    Creando --> Fallida : Sin licencias / Error de validación

    Activa --> Suspendida : Pérdida de conexión

    Activa --> Reservada_Offline : App móvil sin conexión < 24h

    Activa --> Terminando : Cierre solicitado por usuario

    Activa --> Terminando : Detección de fraude

    Activa --> Terminando : Reducción de licencias (FIFO)

    Suspendida --> Activa : Reconexión dentro de 5 minutos

    Suspendida --> Terminando : Timeout > 10 minutos

    Suspendida --> Terminando : Fallo de reconexión (5 intentos)

    Reservada_Offline --> Activa : Reconexión exitosa < 24h

    Reservada_Offline --> Terminando : Timeout offline > 24h

    Reservada_Offline --> Terminando : Reducción de licencias crítica

    Terminando --> Finalizada : Liberación de licencia completada

    Fallida --> [*]

    Finalizada --> [*]

    note right of Activa

        Heartbeat cada 30 segundos

        Monitoreo de comportamiento

        Validación de dispositivo

        Renovación automática de token

    end note

    note right of Suspendida

        Licencia reservada

        Ventana de gracia activa

        Intentos de reconexión

    end note

    note right of Reservada_Offline

        Licencia reservada 24h máximo

        Validación local de token

        Registro de operaciones offline

    end note

Loading

Estados Específicos por Tipo de Aplicación

flowchart LR

    subgraph "GM Fiscal (Crítica Tiempo Real)"

        A1[Activa] --> A2[Prompt Renovación<br/>13 min]

        A2 --> A3[Timeout<br/>15 min]

        A3 --> A4[Terminada]

    end

    subgraph "Doble Check (Semi Persistente)"

        B1[Activa] --> B2[Suspendida<br/>Gracia 30 min]

        B2 --> B3[Timeout<br/>2 horas]

        B3 --> B4[Terminada]

    end

    subgraph "GM Mis Viajes (Móvil Offline)"

        C1[Activa] --> C2[Reservada Offline<br/>24 horas]

        C2 --> C3[Auto-terminada<br/>24h cumplidas]

        C2 --> C4[Reconectada<br/>Sincronización]

        C4 --> C1

    end

    classDef critica fill:#ffebee,stroke:#f44336

    classDef semi fill:#fff3e0,stroke:#ff9800

    classDef movil fill:#e8f5e8,stroke:#4caf50

    class A1,A2,A3,A4 critica

    class B1,B2,B3,B4 semi

    class C1,C2,C3,C4 movil

Loading

4. GESTIÓN DE TOKENS Y VALIDACIÓN DE IDENTIDAD

Arquitectura de Perfiles Dinámicos y Escalables

Este diagrama muestra cómo el sistema maneja perfiles de comportamiento configurables dinámicamente:

flowchart TD

    A[Solicitud de autenticación] --> B[Identificar aplicación]

    B --> C[Consultar perfil de comportamiento]

    C --> D{¿Perfil existe?}

    D -->|No| E[Aplicar perfil por defecto]

    D -->|Sí| F[Cargar configuración del perfil]

    E --> G[Generar token con parámetros por defecto]

    F --> H[Generar token con parámetros del perfil]

    H --> I[Aplicar configuraciones específicas]

    I --> J{¿Tipo de configuración?}

    J -->|Critical Realtime| K[session_timeout: 15min<br/>heartbeat: 60sec<br/>offline_grace: 0min<br/>validation: strict]

    J -->|Desktop Persistent| L[session_timeout: 120min<br/>heartbeat: 300sec<br/>offline_grace: 30min<br/>validation: moderate]

    J -->|Mobile Offline| M[session_timeout: unlimited<br/>heartbeat: 600sec<br/>offline_grace: 1440min<br/>validation: flexible]

    J -->|Custom Profile| N[Parámetros configurables<br/>por administrador<br/>Herencia de perfil base]

    K --> O[Token con perfil Critical]

    L --> P[Token con perfil Desktop]

    M --> Q[Token con perfil Mobile]

    N --> R[Token con perfil Custom]

    O --> S[Enviar a aplicación cliente]

    P --> S

    Q --> S

    R --> S

    G --> S

Loading

Sistema de Registro Dinámico de Aplicaciones

flowchart TD

    A[Nueva aplicación se inicia] --> B[Solicitar registro en GM Authenticator]

    B --> C[Enviar metadatos de aplicación]

    C --> D{¿Perfil especificado?}

    D -->|No| E[Analizar características de la aplicación]

    D -->|Sí| F[Validar perfil contra catálogo]

    E --> G[Sugerir perfil base apropiado]

    G --> H[Aplicación confirma o personaliza]

    F --> I{¿Perfil válido?}

    I -->|No| J[Error: Perfil no válido]

    I -->|Sí| K[Registrar aplicación con perfil]

    H --> L[Crear/actualizar perfil personalizado]

    L --> M[Validar configuración del perfil]

    M --> N{¿Configuración válida?}

    N -->|No| O[Error: Configuración inválida]

    N -->|Sí| K

    K --> P[Almacenar en registro de aplicaciones]

    P --> Q[Generar ID de aplicación único]

    Q --> R[Aplicación registrada exitosamente]

    J --> S[Fin: Registro fallido]

    O --> S

    R --> T[Fin: Registro exitoso]

Loading

Gestión de Configuración en Tiempo Real

flowchart TD

    A[Administrador modifica perfil] --> B[Validar nueva configuración]

    B --> C{¿Configuración válida?}

    C -->|No| D[Error: Configuración inválida]

    C -->|Sí| E[Actualizar definición del perfil]

    E --> F[Notificar cambio a sistema de cache]

    F --> G[Identificar sesiones afectadas]

    G --> H{¿Aplicar inmediatamente?}

    H -->|No| I[Aplicar en próxima renovación de token]

    H -->|Sí| J[Aplicar a sesiones activas]

    J --> K[Actualizar tokens existentes]

    K --> L[Notificar aplicaciones del cambio]

    I --> M[Marcar para aplicación diferida]

    M --> N[Aplicar en próxima validación]

    L --> O[Registrar cambio en auditoría]

    N --> O

    O --> P[Fin: Configuración actualizada]

    D --> Q[Fin: Cambio rechazado]

Loading

Flujo Específico para Aplicaciones Móviles Offline (GM Mis Viajes)

flowchart TD

    A[GM Mis Viajes solicita autenticación] --> B[Generar token con TTL 24 horas]

    B --> C[Marcar licencia como RESERVADA_OFFLINE]

    C --> D[Aplicación inicia operación normal]

    D --> E{¿Conexión disponible?}

    E -->|Sí| F[Heartbeat cada 10 minutos]

    E -->|No| G[Iniciar modo offline]

    F --> H[Validar token en servidor]

    H --> I{¿Token válido?}

    I -->|Sí| J[Continuar operación online]

    I -->|No| K[Renovar token automáticamente]

    K --> J

    G --> L[Validar token localmente]

    L --> M{¿Token < 24 horas?}

    M -->|Sí| N[Continuar operación offline]

    M -->|No| O[Bloquear aplicación - token expirado]

    N --> P[Registrar operaciones offline]

    P --> Q{¿Reconexión disponible?}

    Q -->|No| R[Continuar offline hasta límite]

    Q -->|Sí| S[Iniciar proceso de sincronización]

    R --> T{¿24 horas cumplidas?}

    T -->|No| N

    T -->|Sí| U[Auto-cerrar aplicación]

    U --> V[Liberar licencia automáticamente]

    S --> W[Validar token contra servidor]

    W --> X{¿Token aún válido?}

    X -->|No| Y[Solicitar reautenticación]

    X -->|Sí| Z[Sincronizar operaciones offline]

    Z --> AA[Renovar token para período online]

    AA --> BB[Cambiar licencia a ACTIVA]

    BB --> J

    O --> V

    Y --> CC[Fin: Reautenticación requerida]

    V --> DD[Fin: Sesión terminada]

    J --> EE[Continuar operación]

Loading

Este diagrama explica cómo se generan, validan y renuevan los tokens de sesión para mantener la seguridad:

flowchart TD

    A[Autenticación exitosa] --> B[Generar datos del token]

    B --> C[Crear payload del token]

    C --> D{¿Información del payload?}

    D -->|Incluir| E[ID de sesión único]

    D -->|Incluir| F[RFC de empresa]

    D -->|Incluir| G[ID de usuario]

    D -->|Incluir| H[Timestamp de creación]

    D -->|Incluir| I[Huella digital dispositivo]

    D -->|Incluir| J[Tiempo de expiración]

    D -->|Incluir| K[Permisos/alcance]

    E --> L[Consolidar payload completo]

    F --> L

    G --> L

    H --> L

    I --> L

    J --> L

    K --> L

    L --> M[Firmar token con clave secreta]

    M --> N[Generar token JWT completo]

    N --> O[Almacenar referencia en Redis]

    O --> P[Enviar token a aplicación cliente]

    P --> Q[Cliente almacena token]

    Q --> R[Cliente incluye token en peticiones]

    R --> S{¿Validación del token?}

    S -->|Verificar| T[Validar firma digital]

    S -->|Verificar| U[Verificar expiración]

    S -->|Verificar| V[Verificar huella dispositivo]

    S -->|Verificar| W[Verificar sesión activa en Redis]

    T --> X{¿Firma válida?}

    U --> Y{¿No expirado?}

    V --> Z{¿Dispositivo consistente?}

    W --> AA{¿Sesión existe y activa?}

    X -->|No| BB[Rechazar: Token inválido]

    Y -->|No| CC[Rechazar: Token expirado]

    Z -->|No| DD[Rechazar: Dispositivo inconsistente]

    AA -->|No| EE[Rechazar: Sesión no válida]

    X -->|Sí| FF[Validación de firma OK]

    Y -->|Sí| FF

    Z -->|Sí| FF

    AA -->|Sí| FF

    FF --> GG[Actualizar timestamp último acceso]

    GG --> HH[Permitir operación solicitada]

    subgraph "Renovación Automática"

        II[Token próximo a expirar<br/>< 15 minutos]

        II --> JJ[Generar nuevo token]

        JJ --> KK[Mantener sesión activa]

        KK --> LL[Enviar nuevo token a cliente]

        LL --> MM[Cliente actualiza token]

    end

    CC --> II

    BB --> NN[Fin: Acceso denegado]

    DD --> NN

    EE --> NN

    HH --> OO[Fin: Operación autorizada]

    MM --> OO

Loading

Proceso de Reconexión con Token

flowchart TD

    A[Cliente intenta reconectar] --> B[Enviar token almacenado]

    B --> C{¿Cliente tiene token válido?}

    C -->|No| D[Solicitar nueva autenticación completa]

    C -->|Sí| E[Validar token contra sistema]

    E --> F{¿Token válido y no expirado?}

    F -->|No| G[Verificar si sesión suspendida]

    F -->|Sí| H[Validar estado de sesión]

    G --> I{¿Sesión en ventana de gracia?}

    I -->|No| J[Token inválido - requiere reautenticación]

    I -->|Sí| K[Permitir reconexión con token actual]

    H --> L{¿Sesión activa o suspendida?}

    L -->|Terminada| M[Token inválido - nueva autenticación]

    L -->|Activa| N[Restaurar conexión inmediata]

    L -->|Suspendida| O[Verificar ventana de gracia]

    O --> P{¿Dentro de ventana de gracia?}

    P -->|Sí| Q[Restaurar sesión a estado ACTIVA]

    P -->|No| R[Sesión expirada - nueva autenticación]

    K --> S[Generar nuevo token con expiración extendida]

    N --> T[Mantener token actual]

    Q --> S

    S --> U[Actualizar timestamp sesión]

    T --> U

    U --> V[Reanudar heartbeat normal]

    D --> W[Fin: Reautenticación requerida]

    J --> W

    M --> W

    R --> W

    V --> X[Fin: Reconexión exitosa]

Loading

Validación Continua de Token Durante Sesión Activa

sequenceDiagram

    participant C as Cliente

    participant GM as GM Authenticator

    participant R as Redis

    participant AT as Azure Tables

    Note over C,AT: Validación en cada Heartbeat

    C->>GM: Heartbeat con token

    GM->>GM: Verificar firma token

    alt Token válido

        GM->>R: Verificar sesión activa

        alt Sesión existe

            GM->>R: Actualizar timestamp

            GM->>AT: Log actividad (cada 5 minutos)

            GM-->>C: ACK - Token válido

        else Sesión no existe

            GM-->>C: Error - Sesión inválida

            Note over C: Cliente debe reautenticar

        end

    else Token inválido/expirado

        GM->>R: Verificar si sesión en gracia

        alt En ventana de gracia

            GM->>GM: Generar nuevo token

            GM->>R: Actualizar sesión

            GM-->>C: Nuevo token + ACK

            C->>C: Almacenar nuevo token

        else Fuera de gracia

            GM-->>C: Error - Reautenticación requerida

        end

    end

    Note over C,AT: Renovación Automática

    alt Token próximo a expirar (< 15 min)

        GM->>GM: Detectar próxima expiración

        GM->>R: Verificar sesión válida

        GM->>GM: Generar token renovado

        GM->>AT: Log renovación token

        GM-->>C: Nuevo token (renovación automática)

        C->>C: Reemplazar token anterior

    end

    Note over C,AT: Comunicación fuera de Internet

    C->>C: Detectar pérdida conectividad

    C->>C: Almacenar operaciones offline

    Note over C: Mantiene token en memoria

    C->>GM: Reconectar con token almacenado

    GM->>GM: Validar token offline

    alt Token aún válido

        GM->>R: Verificar estado sesión

        alt Sesión suspendida < 10 min

            GM->>R: Restaurar sesión activa

            GM->>AT: Log reconexión exitosa

            GM-->>C: Reconexión aceptada

            C->>GM: Sincronizar operaciones offline

        else Sesión terminada

            GM-->>C: Token inválido - reautenticar

        end

    else Token expirado

        GM-->>C: Token expirado - reautenticar

    end

Loading

6. DETECCIÓN Y RESPUESTA ANTE FRAUDE

Este diagrama muestra cómo el sistema detecta y responde a comportamientos sospechosos:

flowchart TD

    A[Sesión activa en monitoreo] --> B[Recopilar métricas de comportamiento]

    B --> C{¿Patrón anómalo detectado?}

    C -->|No| D[Continuar monitoreo normal]

    D --> B

    C -->|Sí| E[Analizar tipo de anomalía]

    E --> F{¿Tipo de anomalía?}

    F -->|Geográfica| G[Múltiples ubicaciones simultáneas]

    F -->|Temporal| H[Patrones de uso inconsistentes]

    F -->|Dispositivo| I[Cambios súbitos en huella digital]

    F -->|Heartbeat| J[Patrones irregulares de conexión]

    F -->|Token| K[Uso sospechoso de tokens]

    G --> L[Evaluar severidad geográfica]

    H --> M[Evaluar severidad temporal]

    I --> N[Evaluar severidad dispositivo]

    J --> O[Evaluar severidad conexión]

    K --> P[Evaluar severidad token]

    L --> Q{¿Severidad alta?}

    M --> Q

    N --> Q

    O --> Q

    P --> Q

    Q -->|No| R[Marcar para revisión]

    Q -->|Sí| S[Activar protocolo de seguridad]

    R --> T[Incrementar nivel vigilancia]

    T --> U[Solicitar validación adicional]

    U --> V[Reducir tiempo expiración token]

    V --> B

    S --> W[Suspender sesión inmediatamente]

    W --> X[Invalidar todos los tokens]

    X --> Y[Liberar licencia]

    Y --> Z[Notificar usuario del incidente]

    Z --> AA[Registrar evento en auditoría]

    AA --> BB[Bloquear acceso temporal]

    BB --> CC[Requerir proceso recuperación]

    CC --> DD[Fin: Acceso bloqueado por seguridad]

Loading

7. FLUJO DE RECUPERACIÓN DE CONECTIVIDAD

Este diagrama detalla cómo el sistema maneja las interrupciones de red y reconexiones:

flowchart TD

    A[Sesión activa perdiendo conexión] --> B[Detectar falta de heartbeat]

    B --> C[Iniciar cronómetro de gracia]

    C --> D[Cambiar estado a SUSPENDIDA]

    D --> E{¿Usuario intenta reconectar?}

    E -->|No| F[Esperar pasivamente]

    E -->|Sí| G[Validar identidad y sesión]

    F --> H{¿Timeout < 5 minutos?}

    G --> I{¿Validación exitosa?}

    I -->|No| J[Rechazar reconexión]

    I -->|Sí| K[Aplicar backoff exponencial]

    J --> L[Incrementar contador fallos]

    L --> M{¿Excede límite intentos?}

    M -->|Sí| N[Marcar sesión irrecuperable]

    M -->|No| O[Permitir nuevo intento]

    K --> P[Intentar restablecimiento]

    P --> Q{¿Reconexión exitosa?}

    Q -->|Sí| R[Restaurar estado ACTIVA]

    Q -->|No| S[Incrementar contador reconexión]

    S --> T{¿Intentos < 5?}

    T -->|Sí| U[Esperar tiempo backoff]

    T -->|No| N

    U --> K

    H -->|Sí| V[Mantener en SUSPENDIDA]

    H -->|No| W{¿Timeout < 10 minutos?}

    W -->|Sí| V

    W -->|No| X[Activar liberación automática]

    V --> E

    R --> Y[Reanudar heartbeat normal]

    Y --> Z[Fin: Sesión recuperada]

    N --> AA[Liberar licencia definitivamente]

    X --> AA

    O --> E

    AA --> BB[Fin: Sesión terminada]

Loading

8. INTEGRACIÓN CON SISTEMAS LEGACY

Este diagrama muestra cómo GM Authenticator coexiste con los sistemas existentes:

flowchart LR

    subgraph "Aplicaciones Cliente"

        A1[App Moderna<br/>WebSocket]

        A2[App Legacy<br/>HTTP Polling]

        A3[App Híbrida<br/>Multi-protocolo]

    end

    subgraph "GM Authenticator"

        B1[Detector de Capacidades]

        B2[Adaptador WebSocket]

        B3[Adaptador HTTP]

        B4[Gestor de Sesiones Unificado]

        B5[Monitor de Coherencia]

        B6[Validador de Tokens]

    end

    subgraph "Sistemas ERP Legacy"

        C1[Servicios SOAP]

        C2[GMTERP_Principal]

        C3[Bases Datos Cliente]

    end

    A1 --> B1

    A2 --> B1

    A3 --> B1

    B1 -->|WebSocket detectado| B2

    B1 -->|HTTP detectado| B3

    B1 -->|Capacidades mixtas| B2

    B1 --> B3

    B2 --> B4

    B3 --> B4

    B4 <--> B6

    B4 <--> B5

    B5 <--> C1

    B4 --> C2

    C2 --> C3

    B5 -->|Sincronización| B4

    B6 -->|Validación continua| B4

    classDef modern fill:#e1f5fe

    classDef legacy fill:#fff3e0

    classDef gmauth fill:#e8f5e8

    class A1 modern

    class A2,A3,C1,C2,C3 legacy

    class B1,B2,B3,B4,B5,B6 gmauth

Loading

9. FLUJO DE AUDITORÍA Y REGISTRO

Este diagrama ilustra cómo se registran y conservan los eventos para cumplimiento regulatorio:

flowchart TD

    A[Evento de autenticación ocurre] --> B[Capturar metadatos del evento]

    B --> C[Determinar tipo de evento]

    C --> D{¿Tipo de evento?}

    D -->|Login exitoso| E[Registrar: usuario, RFC, IP, dispositivo, timestamp, token_id]

    D -->|Login fallido| F[Registrar: intento, razón fallo, IP, timestamp]

    D -->|Sesión terminada| G[Registrar: duración, motivo cierre, métricas, token_invalidado]

    D -->|Cambio licencias| H[Registrar: valores anterior/nuevo, impacto]

    D -->|Incidente seguridad| I[Registrar: tipo amenaza, acciones tomadas, tokens_afectados]

    D -->|Renovación token| J[Registrar: token_anterior, token_nuevo, motivo_renovación]

    D -->|Token inválido| K[Registrar: token_rechazado, razón_rechazo, acción_tomada]

    D -->|Sesión offline| L[Registrar: inicio_offline, app_tipo, duración_estimada]

    D -->|Reconexión offline| M[Registrar: fin_offline, duración_real, operaciones_sincronizadas]

    D -->|Timeout offline| N[Registrar: timeout_offline, liberación_licencia, tipo_aplicacion]

    E --> L[Crear registro inmutable]

    F --> L

    G --> L

    H --> L

    I --> L

    J --> L

    K --> L

    L --> L

    M --> L

    N --> L

    L --> M[Almacenar en registro permanente]

    M --> N[Aplicar políticas de retención]

    N --> O{¿Requiere alerta inmediata?}

    O -->|Sí| P[Enviar notificación a administradores]

    O -->|No| Q[Continuar con siguiente evento]

    P --> R[Generar reporte de incidente]

    R --> S[Activar procedimientos respuesta]

    Q --> T[Fin: Evento registrado]

    S --> T

    subgraph "Políticas de Retención"

        U[Logs autenticación: 5 años]

        V[Datos sesión activa: Vida útil + 90 días]

        W[Registros incidentes: Permanente]

        X[Historial tokens: 1 año]

    end

    N -.-> U

    N -.-> V

    N -.-> W

    N -.-> X

Loading

10. MONITOREO DE RENDIMIENTO Y ALERTAS

Este diagrama muestra el sistema de monitoreo continuo y generación de alertas:

flowchart TD

    A[Sistema en operación] --> B[Recopilar métricas en tiempo real]

    B --> C[Evaluar métricas críticas]

    C --> D{¿Tiempo respuesta > 2 seg?}

    C --> E{¿Tasa fallos > 5%?}

    C --> F{¿Uso licencias > 80%?}

    C --> G{¿Disponibilidad < 99.5%?}

    D -->|Sí| H{¿Tiempo > 5 seg?}

    D -->|No| I[Continuar monitoreo]

    H -->|Sí| J[Alerta CRÍTICA: Rendimiento]

    H -->|No| K[Alerta ADVERTENCIA: Rendimiento]

    E -->|Sí| L[Alerta CRÍTICA: Tasa fallos]

    E -->|No| I

    F -->|Sí| M{¿Uso > 95%?}

    F -->|No| I

    M -->|Sí| N[Alerta CRÍTICA: Licencias agotándose]

    M -->|No| O[Alerta ADVERTENCIA: Alto uso licencias]

    G -->|Sí| P[Alerta CRÍTICA: Disponibilidad]

    G -->|No| I

    J --> Q[Escalación automática]

    L --> Q

    N --> Q

    P --> Q

    K --> R[Notificación equipo técnico]

    O --> R

    Q --> S[Activar procedimientos emergencia]

    R --> T[Investigación programada]

    S --> U[Evaluar activación modo emergencia]

    T --> V[Optimización preventiva]

    I --> W[Actualizar dashboard tiempo real]

    W --> B

    U --> X{¿Requiere modo emergencia?}

    X -->|Sí| Y[Activar autenticación directa ERP]

    X -->|No| Z[Continuar con mitigaciones]

    Y --> AA[Notificar usuarios del cambio]

    Z --> BB[Aplicar correcciones automáticas]

    V --> CC[Fin: Mantenimiento preventivo]

    AA --> CC

    BB --> CC

Loading

11. GESTIÓN DE INCIDENTES CRÍTICOS

Este diagrama detalla el proceso de respuesta ante incidentes mayores:

flowchart TD

    A[Incidente detectado] --> B[Clasificar severidad automáticamente]

    B --> C{¿Severidad?}

    C -->|CRÍTICO| D[Respuesta inmediata < 15 min]

    C -->|ALTO| E[Respuesta en 1 hora]

    C -->|MEDIO| F[Respuesta en 4 horas]

    C -->|BAJO| G[Respuesta siguiente día laboral]

    D --> H[Notificar usuarios afectados inmediatamente]

    E --> I[Notificar usuarios en 30 minutos]

    F --> J[Notificar según impacto]

    G --> K[Notificación rutinaria]

    H --> L[Evaluar activación modo emergencia]

    I --> M[Investigación prioritaria]

    J --> N[Análisis programado]

    K --> O[Revisión en próxima ventana]

    L --> P{¿Fallo completo del sistema?}

    P -->|Sí| Q[Activar modo emergencia automático]

    P -->|No| R[Implementar mitigaciones graduales]

    Q --> S[Permitir autenticación directa ERP]

    S --> T[Establecer límite temporal 24 horas]

    T --> U[Monitorear uso durante emergencia]

    U --> V[Invalidar todos los tokens GM Auth]

    R --> W[Aplicar degradación elegante]

    W --> X[Priorizar sesiones existentes]

    X --> Y[Extender expiración tokens críticos]

    M --> Z[Identificar causa raíz]

    N --> Z

    O --> Z

    Z --> AA[Implementar solución]

    AA --> BB[Validar resolución]

    V --> CC{¿Sistema restaurado?}

    Y --> CC

    BB --> CC

    CC -->|No| DD[Extender modo emergencia]

    CC -->|Sí| EE[Desactivar modo emergencia]

    DD --> FF[Requiere aprobación administrativa]

    EE --> GG[Restaurar operación normal]

    GG --> HH[Revalidar todos los tokens]

    FF --> II[Continuar en emergencia]

    HH --> JJ[Generar reporte post-incidente]

    JJ --> KK[Actualizar procedimientos]

    II --> LL[Escalación a nivel ejecutivo]

    KK --> MM[Fin: Incidente resuelto]

    LL --> MM

Loading

12. ARQUITECTURA GENERAL DEL SISTEMA

Este diagrama muestra la vista general de cómo GM Authenticator se integra en el ecosistema:

graph TB

    subgraph "Capa de Usuarios"

        U1[👤 Usuarios Productivos]

        U2[👤 Usuarios Demo]

        U3[👤 Administradores]

    end

    subgraph "Capa de Aplicaciones"

        A1[📱 Apps Móviles]

        A2[💻 Apps Web]

        A3[🖥️ Apps Desktop]

        A4[🔧 Apps Legacy]

    end

    subgraph "GM Authenticator - Núcleo"

        direction TB

        GA1[🔐 Gestor Autenticación]

        GA2[📊 Control Licencias]

        GA3[🌐 Gestor Sesiones]

        GA4[🎫 Gestor Tokens JWT]

        GA5[🛡️ Monitor Seguridad]

        GA6[📈 Auditoría]

        GA1 <--> GA2

        GA2 <--> GA3

        GA3 <--> GA4

        GA4 <--> GA5

        GA5 <--> GA6

    end

    subgraph "Infraestructura de Datos"

        direction LR

        DB1[🗄️ GMTERP_Principal<br/>Control Central]

        DB2[🗂️ Bases Cliente<br/>GMTERP_WEB_*]

        DB3[💾 Cache Redis<br/>Estado Sesiones]

        DB4[📋 Azure Tables<br/>Auditoría]

    end

    subgraph "Sistemas Legacy"

        L1[🧮 Servicios SOAP ERP]

        L2[📊 Sistemas Facturación]

        L3[🚛 Apps Transporte]

    end

    %% Conexiones principales

    U1 --> A1

    U2 --> A2

    U3 --> A3

    A1 --> GA1

    A2 --> GA1

    A3 --> GA1

    A4 --> GA1

    GA1 --> DB1

    GA2 <--> DB3

    GA3 <--> DB3

    GA4 <--> DB3

    GA6 --> DB4

    GA1 -.-> DB2

    GA2 -.-> L1

    L1 <--> DB1

    L2 <--> DB2

    L3 <--> DB2

    %% Estilos

    classDef users fill:#e3f2fd,stroke:#1976d2

    classDef apps fill:#f3e5f5,stroke:#7b1fa2

    classDef gmauth fill:#e8f5e8,stroke:#388e3c

    classDef data fill:#fff3e0,stroke:#f57c00

    classDef legacy fill:#fce4ec,stroke:#c2185b

    class U1,U2,U3 users

    class A1,A2,A3,A4 apps

    class GA1,GA2,GA3,GA4,GA5,GA6 gmauth

    class DB1,DB2,DB3,DB4 data

    class L1,L2,L3 legacy

Loading

13. CRONOLOGÍA DE UNA SESIÓN COMPLETA CON TOKENS

Este diagrama de secuencia muestra la interacción temporal entre los componentes durante una sesión típica:

sequenceDiagram

    participant U as Usuario

    participant A as Aplicación

    participant GM as GM Authenticator

    participant DB as Base Datos

    participant R as Redis

    participant AT as Azure Tables

    Note over U,AT: Proceso de Autenticación

    U->>A: Solicita acceso (RFC, User, Pass)

    A->>GM: Petición autenticación

    GM->>DB: Validar RFC empresa

    DB-->>GM: Empresa válida

    GM->>DB: Validar usuario y credenciales

    DB-->>GM: Credenciales correctas

    GM->>GM: Generar huella digital dispositivo

    GM->>R: Verificar licencias disponibles

    R-->>GM: Licencias disponibles: Sí

    GM->>R: Reservar licencia temporalmente

    GM->>DB: Verificar sesiones previas

    DB-->>GM: Sesión previa encontrada

    GM->>R: Terminar sesión anterior

    GM->>R: Crear nueva sesión

    GM->>AT: Registrar evento login exitoso

    GM-->>A: Token sesión válido

    A-->>U: Acceso concedido

    Note over U,AT: Mantenimiento de Sesión Activa

    loop Cada 30 segundos

        A->>GM: Heartbeat

        GM->>R: Actualizar timestamp sesión

        GM-->>A: ACK Heartbeat

    end

    Note over U,AT: Detección de Problema

    A->>GM: Heartbeat (falla de red)

    Note over GM: No se recibe heartbeat por 90 seg

    GM->>R: Cambiar estado a SUSPENDIDA

    GM->>GM: Iniciar cronómetro gracia (5 min)

    Note over U,AT: Recuperación

    A->>GM: Intento reconexión

    GM->>GM: Validar identidad

    GM->>R: Restaurar estado ACTIVA

    GM->>AT: Registrar evento reconexión

    GM-->>A: Reconexión exitosa

    Note over U,AT: Cierre de Sesión

    U->>A: Solicita logout

    A->>GM: Terminar sesión

    GM->>R: Liberar licencia

    GM->>R: Eliminar datos sesión

    GM->>AT: Registrar evento logout

    GM-->>A: Sesión terminada

    A-->>U: Logout completado

Loading

14. RESUMEN DE BENEFICIOS VISUALES

mindmap

  root)GM Authenticator(

    Beneficios Operacionales

      Reducción 80% consultas ERP

      Eliminación conflictos licencias

      Gestión centralizada sesiones

      Desarrollo apps más rápido

      Tokens seguros y escalables

    Beneficios Seguridad

      Detección automática fraude

      Trazabilidad completa accesos

      Políticas consistentes

      Respuesta inmediata amenazas

      Validación continua tokens

      Invalidación inmediata compromisos

    Beneficios Comerciales

      Protección modelo licenciamiento

      Métricas precisas uso

      Licenciamiento dinámico

      Reducción costos soporte

      Control granular accesos

    Beneficios Técnicos

      Arquitectura escalable 500%

      Disponibilidad 99.5%

      Integración sin disrupción

      Monitoreo tiempo real

      Recuperación automática fallos

      Soporte offline inteligente

Loading

CONCLUSIONES

Los diagramas presentados en este documento ilustran la complejidad y robustez del sistema GM Authenticator, mostrando cómo cada componente interactúa para garantizar:

Flujos Críticos Cubiertos:

  1. Autenticación Segura - Proceso completo de validación con múltiples checkpoints

  2. Control Dinámico de Licencias - Gestión en tiempo real sin pérdida de integridad

  3. Manejo de Estados de Sesión - Transiciones claras y recuperación robusta, incluyendo estados offline

  4. Gestión de Tokens JWT - Generación, validación, renovación y revocación segura con configuración por aplicación

  5. Validación Continua de Identidad - Verificación constante durante toda la sesión

  6. Detección de Fraude - Monitoreo proactivo y respuesta automática

  7. Recuperación de Conectividad - Tolerancia a fallos con políticas de gracia y tokens persistentes

  8. Integración Legacy - Coexistencia sin disrupción

  9. Auditoría Completa - Trazabilidad para cumplimiento regulatorio incluyendo eventos de tokens y operaciones offline

  10. Monitoreo y Alertas - Detección proactiva de problemas

  11. Gestión de Incidentes - Respuesta estructurada por severidad con invalidación masiva de tokens

  12. Configuración Diferenciada por Aplicación - Manejo específico para GM Fiscal, Doble Check, GM Mis Viajes

Características Destacadas del Sistema de Tokens:

  • Tokens JWT Seguros - Firmados digitalmente con información de sesión y dispositivo

  • Validación Multi-Nivel - Firma, expiración, dispositivo, y estado de sesión

  • Renovación Automática - Sin interrupción para el usuario final

  • Recuperación Offline - Tokens válidos durante ventanas de gracia definidas

  • Invalidación Granular - Por usuario, sesión, o masiva en emergencias

  • Auditoría Completa - Trazabilidad de todo el ciclo de vida del token

  • Configuración por Aplicación - Políticas específicas para GM Fiscal (15 min), Doble Check (2h), GM Mis Viajes (24h offline)

Flujos de Comunicación Fuera de Internet:

  • Persistencia Local - Tokens almacenados localmente para reconexión

  • Validación Offline - Verificación local de tokens durante desconexión

  • Sincronización Inteligente - Recuperación de operaciones pendientes al reconectar

  • Ventanas de Gracia Configurables - GM Fiscal: No tolerancia, Doble Check: 30 min, GM Mis Viajes: 24 horas

  • Gestión de Licencias Offline - Reserva inteligente y liberación automática por timeout

Manejo Diferenciado por Tipo de Aplicación:

  • GM Fiscal (Crítica) - Validación estricta, prompt a 13 min, timeout 15 min, sin tolerancia offline

  • Doble Check (Semi-persistente) - Gracia de 30 min offline, timeout 2 horas, reconexión tolerante

  • GM Mis Viajes (Móvil) - Operación offline 24h, validación local, sincronización automática

Estos diagramas servirán como referencia visual para el desarrollo, implementación y operación del sistema GM Authenticator, con especial énfasis en la robustez del sistema de tokens para garantizar seguridad y continuidad operacional.


12. ARQUITECTURA GENERAL DEL SISTEMA EVOLUTIVO

Vista Completa de la Arquitectura con Perfiles Dinámicos:

graph TB

    subgraph "Capa de Aplicaciones"

        A1[📱 GM Fiscal<br/>Profile: critical_realtime]

        A2[💻 Doble Check<br/>Profile: desktop_persistent]

        A3[📱 GM Mis Viajes<br/>Profile: mobile_offline]

        A4[🔧 Nueva App<br/>Profile: custom_profile]

    end

    subgraph "GM Authenticator - Núcleo Evolutivo"

        direction TB

        GA1[🔐 Gestor Autenticación]

        GA2[📊 Motor de Perfiles Dinámicos]

        GA3[🌐 Gestor Sesiones]

        GA4[🎫 Gestor Tokens JWT]

        GA5[🛡️ Monitor Seguridad]

        GA6[📈 Auditoría]

        GA7[⚙️ API Configuración]

        GA1 <--> GA2

        GA2 <--> GA3

        GA3 <--> GA4

        GA4 <--> GA5

        GA5 <--> GA6

        GA2 <--> GA7

    end

    subgraph "Almacén de Configuración"

        direction LR

        CF1[📋 Registro de Aplicaciones]

        CF2[🎛️ Perfiles de Comportamiento]

        CF3[📊 Métricas por Perfil]

        CF4[🔄 Historial de Cambios]

    end

    subgraph "Infraestructura de Datos"

        direction LR

        DB1[🗄️ GMTERP_Principal<br/>Control Central]

        DB2[🗂️ Bases Cliente<br/>GMTERP_WEB_*]

        DB3[💾 Cache Redis<br/>Estado Sesiones]

        DB4[📋 Azure Tables<br/>Auditoría]

    end

    %% Conexiones principales

    A1 --> GA1

    A2 --> GA1

    A3 --> GA1

    A4 --> GA1

    GA1 --> DB1

    GA2 <--> CF1

    GA2 <--> CF2

    GA3 <--> DB3

    GA4 <--> DB3

    GA5 --> CF3

    GA6 --> DB4

    GA7 --> CF4

    GA1 -.-> DB2

    %% Estilos

    classDef apps fill:#e3f2fd,stroke:#1976d2

    classDef gmauth fill:#e8f5e8,stroke:#388e3c

    classDef config fill:#f3e5f5,stroke:#7b1fa2

    classDef data fill:#fff3e0,stroke:#f57c00

    class A1,A2,A3,A4 apps

    class GA1,GA2,GA3,GA4,GA5,GA6,GA7 gmauth

    class CF1,CF2,CF3,CF4 config

    class DB1,DB2,DB3,DB4 data

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment