← Volver a Middleware

JwtLoggingMiddleware

Middleware para logging detallado de autenticación JWT y corrección automática de headers

📊 Resumen del Middleware

61
Líneas de Código
Auto
Corrección Headers
Claims
Análisis JWT
Security
Monitoreo

El JwtLoggingMiddleware es un componente de seguridad del sistema RestMaster que proporciona logging detallado de autenticación JWT y corrección automática de headers de autorización. Este middleware mejora la seguridad del sistema al registrar información de autenticación y corregir automáticamente headers malformados.

🎯 Funcionalidades Principales

  • Logging de autenticación: Registro detallado de peticiones autenticadas
  • Corrección automática: Añade "Bearer " a headers malformados
  • Análisis de claims: Extracción y logging de claims JWT
  • Detección de accesos anónimos: Alerta sobre intentos de acceso sin autenticación
  • Información de contexto: IP, User-Agent, endpoint y método
  • Logging estructurado: Formato optimizado para análisis
  • Seguridad proactiva: Monitoreo de patrones de acceso
  • Integración con Grafana: Logs compatibles con Grafana Loki

🔧 Dependencias y Servicios

Servicios Inyectados por Constructor:

  • RequestDelegate next - Pipeline de middleware
  • ILogger<JwtLoggingMiddleware> - Logging de eventos

📊 Dependencias de JWT

  • System.IdentityModel.Tokens.Jwt: Análisis de tokens JWT
  • JwtSecurityTokenHandler: Handler para procesar tokens
  • JwtSecurityToken: Representación del token JWT

📋 Flujo de Procesamiento

🎯 Pipeline de Logging JWT

  1. Extracción de header: Obtiene Authorization header
  2. Corrección automática: Añade "Bearer " si falta
  3. Extracción de información: Obtiene datos de contexto
  4. Análisis de token: Lee y analiza JWT si existe
  5. Extracción de claims: Obtiene claims relevantes del token
  6. Detección de anónimos: Identifica accesos sin autenticación
  7. Logging estructurado: Registra información completa
  8. Alertas de seguridad: Alerta sobre accesos anónimos
  9. Continuación del pipeline: Continúa con el resto de middlewares

⚠️ Características de Seguridad

  • Corrección automática: Añade "Bearer " a headers malformados
  • Validación de token: Verifica que el JWT sea legible
  • Logging seguro: No expone tokens completos
  • Detección de anónimos: Alerta sobre accesos no autenticados
  • Información de contexto: IP, User-Agent para auditoría
  • Claims filtrados: Solo claims relevantes para seguridad

📊 Información Capturada

🔍 Información de Petición

Datos básicos de la petición HTTP
  • Método: GET, POST, PUT, DELETE, etc.
  • Endpoint: Ruta completa de la petición
  • User-Agent: Información del cliente
  • IP Remota: Dirección IP del cliente

👤 Información de Usuario

Datos de autenticación y contexto
  • Usuario: Nombre del usuario autenticado
  • Claims: Claims relevantes del JWT
  • Estado: Autenticado o anónimo
  • Header Auth: Estado del header Authorization

🔐 Análisis JWT

Información extraída del token
  • Claims: Tipo=Valor de claims relevantes
  • Validez: Si el token es legible
  • Formato: Verificación de formato Bearer
  • Corrección: Si se aplicó corrección automática

⚠️ Alertas de Seguridad

Eventos de seguridad detectados
  • Acceso anónimo: Peticiones sin autenticación
  • Headers malformados: Authorization sin "Bearer "
  • Tokens inválidos: JWT no legibles
  • Patrones sospechosos: Accesos desde IPs específicas

🔍 Análisis de Claims JWT

🎯 Claims Relevantes Capturados

  • name: Nombre del usuario
  • email: Correo electrónico
  • role: Rol o permisos del usuario
  • sub: Subject (identificador del usuario)
  • installation: Código de instalación
  • exp: Tiempo de expiración
  • iat: Tiempo de emisión

📊 Formato de Logging de Claims

Claims: name=John Doe, email=john@example.com, role=admin, installation=INST001

⚠️ Filtrado de Claims

  • Claims sensibles: No se registran claims con información sensible
  • Claims relevantes: Solo se capturan claims importantes para auditoría
  • Formato seguro: Claims se registran en formato Tipo=Valor
  • Sin tokens completos: No se expone el token JWT completo

🔍 Características Técnicas

🎯 Características del Middleware

  • Async/Await: Operaciones asíncronas completas
  • JWT Security Token Handler: Análisis seguro de tokens
  • Header Correction: Corrección automática de headers malformados
  • Structured Logging: Logging estructurado para análisis
  • Security Monitoring: Monitoreo proactivo de seguridad
  • Context Preservation: Preserva contexto de la petición
  • Error Handling: Manejo robusto de errores de JWT
  • Performance Optimized: Operaciones eficientes

⚠️ Consideraciones de Seguridad

  • No expone tokens JWT completos en logs
  • Corrige headers malformados automáticamente
  • Alerta sobre accesos anónimos
  • Registra IPs para auditoría de seguridad
  • Filtra claims sensibles
  • Maneja errores de JWT de forma segura
  • No interfiere con el flujo de autenticación

📝 Patrones de Diseño Utilizados

  • Middleware Pattern: Procesamiento en pipeline
  • Chain of Responsibility: Delegación de responsabilidades
  • Observer Pattern: Observación de eventos de autenticación
  • Strategy Pattern: Diferentes estrategias según tipo de token
  • Template Method: Estructura común de logging
  • Decorator Pattern: Enriquecimiento de información

📈 Estadísticas de Rendimiento

O(1)
Análisis JWT
Auto
Corrección Headers
Claims
Extracción
Security
Monitoreo

Optimizaciones Implementadas:

🔗 Integración con Otros Componentes

🎯 Middleware Relacionados

  • JwtAutoRefreshMiddleware: Complementa con renovación automática
  • GrafanaLoggingMiddleware: Logging estructurado complementario
  • ErrorHandlingMiddleware: Manejo de errores de autenticación
  • DayOpenValidationMiddleware: Validación con información de usuario

📋 Orden de Ejecución Recomendado

  1. SpanishCultureMiddleware: Configuración de cultura
  2. GrafanaLoggingMiddleware: Logging de inicio
  3. JwtLoggingMiddleware: Logging de autenticación
  4. JwtAutoRefreshMiddleware: Renovación de tokens
  5. DayOpenValidationMiddleware: Validación de día abierto
  6. ErrorHandlingMiddleware: Manejo de errores

📋 Casos de Uso

🎯 Escenarios de Logging

  • Acceso autenticado: Usuario con token válido
  • Acceso anónimo: Petición sin autenticación
  • Header malformado: Authorization sin "Bearer "
  • Token inválido: JWT no legible o corrupto
  • Claims específicos: Usuario con roles o permisos específicos
  • Acceso desde IP específica: Monitoreo de ubicaciones
  • Patrones de uso: Análisis de comportamiento de usuarios
  • Auditoría de seguridad: Seguimiento de accesos

🔍 Ejemplos de Logs

  • Acceso autenticado: "API Request: GET /api/articulos/getall | User: admin | IP: 192.168.1.100 | Claims: name=Admin User, role=admin"
  • Acceso anónimo: "Intento de acceso anónimo a /api/articulos/getall desde IP 192.168.1.100"
  • Header corregido: "Authorization header corregido automáticamente"
  • Token inválido: "JWT token no legible en petición"
  • Claims específicos: "Usuario con rol admin accede a endpoint sensible"