Skip to content

Autenticación de Cobertura - security-v1-authcoverage

Información del Servicio

Endpoint: /api/security/v1/authcoverage
Método: POST
Versión: v1
Categoría: Seguridad

Documentación del Servicio

Descripción general

El servicio security-v1-authcoverage es un endpoint para obtener un token de autenticación para la cobertura. Este servicio permite autenticar un cliente consumidor con el servidor de aplicaciones y generar un token de seguridad para validar la cobertura de servicios de telecomunicaciones.

Categoría de negocio: Seguridad y Autenticación.

Casos de uso principales:

  • Autenticación de sistemas externos para consulta de cobertura
  • Generación de tokens de seguridad para validación de servicios
  • Integración con el mapa de coberturas de ETB
  • Validación de origen de peticiones de cobertura

Especificación técnica

  • Endpoint completo: /api/security/v1/authcoverage
  • Método HTTP: POST
  • Capas involucradas:
    • Controlador: SecurityController
    • Lógica de negocio: SecurityBusiness
    • Acceso a datos: CoverageClient

Flujo de procesamiento:

  1. Validación de la petición y conversión de datos
  2. Obtención del origen de la petición
  3. Verificación del estado del API (encendido/apagado)
  4. Autenticación con el servicio de cobertura
  5. Generación y retorno del token

Dependencias principales:

  • CoverageClient para comunicación con el mapa de coberturas
  • SecurityUtil para validaciones de seguridad
  • ConfigurationUtil para gestión de configuraciones
  • AuditUtil para auditoría de peticiones

Consideraciones de seguridad:

  • Validación de origen de la petición
  • Autenticación mediante credenciales configuradas
  • Auditoría completa de todas las peticiones
  • Manejo seguro de tokens de autenticación

Parámetros de entrada (Request)

Headers

CampoTipoObligatorioDescripción
WSRequestHeaderobjectCabecera de la petición con información del sistema y propiedades

Body

CampoTipoObligatorioDescripción
AuditobjectNoInformación de auditoría de la petición
Billing_AccountstringNoCuenta de facturación asociada
CustomerobjectNoInformación del cliente
PhonestringNoNúmero de teléfono

Estructura de objetos anidados:

Estructura de WSRequestHeader

CampoTipoObligatorioDescripción
SystemobjectNoInformación asociada al sistema
PropertyarrayNoPropiedades asociadas al consumo del servicio web

Estructura de WSRequestHeader.System

CampoTipoObligatorioDescripción
NamestringNombre del sistema
CorrelationIDstringIdentificador de la petición
ProcessingServerstringServidor de procesamiento del sistema

Estructura de WSRequestHeader.Property

CampoTipoObligatorioDescripción
NamestringNombre de la propiedad
ValuestringValor de la propiedad

Estructura de Audit

CampoTipoObligatorioDescripción
BrowserstringNoNavegador de la petición
Browser_IdstringNoId del navegador
Browser_InputTypestringNoTipo de input
Browser_PlatformstringNoPlataforma del navegador
Browser_VersionstringNoVersión del navegador
EncodingstringNoEncoding de la petición
IPstringNoIP de la petición
IP_XstringNoIP de las server variables
IPsarrayNoListado de IPs
MiETB_UserstringNoId del usuario de MiETB
URLstringNoURL de la petición
URL_ReferrerstringNoURL de referencia
User_AgentstringNoAgente de usuario
User_NamestringNoNombre del usuario

Estructura de Customer

CampoTipoObligatorioDescripción
Document_NumberstringNoNúmero de documento del cliente
Document_TypestringNoTipo de documento del cliente

Respuesta esperada (Response)

Headers

CampoTipoObligatorioDescripción
WSResponseHeaderobjectCabecera de la respuesta con información del sistema y servicio

Body

CampoTipoObligatorioDescripción
TokenstringNoToken devuelto por API de portaldirecciones para autenticar

Estructura de objetos anidados:

Estructura de WSResponseHeader

CampoTipoObligatorioDescripción
SystemobjectNoInformación asociada al sistema
ServiceobjectNoInformación asociada a la ejecución del servicio
PropertyarrayNoArreglo de propiedades asociado al servicio

Estructura de WSResponseHeader.System

CampoTipoObligatorioDescripción
NamestringNoNombre del sistema
CorrelationIDstringNoIdentificador de la petición
ProcessingServerstringNoServidor de procesamiento del sistema

Estructura de WSResponseHeader.Service

CampoTipoObligatorioDescripción
StatusstringNoEstado de la ejecución del servicio web
ResponseDatedatetimeNoFecha de la respuesta
ProcessingServerstringNoServidor de procesamiento de la solicitud
StatusDetailarrayNoDetalle del procesamiento de la solicitud

Estructura de WSResponseHeader.Property

CampoTipoObligatorioDescripción
NamestringNoNombre de la propiedad
ValuestringNoValor de la propiedad

Estructura de WSResponseHeader.Service.StatusDetail

CampoTipoObligatorioDescripción
ErrorCodestringNoCódigo del error
ErrorDetailCodestringNoDetalle del error
ErrorMessagestringNoMensaje del error
ErrorMessageUserstringNoMensaje del error para usuario

Manejo de errores

CódigoDescripciónEjemplo
ERROR_04La solicitud no fue exitosa. Fueron enviados objetos no acordes a la peticiónError en conversión de datos
ERROR_06Error en autenticación de coberturaFallo en comunicación con servicio de cobertura

Análisis de Componentes

Modelos y componentes

Modelos base utilizados:

  • BaseRequestAuthCoverage: Modelo de petición para autenticación de cobertura
  • BaseResponseAuthCoverage: Modelo de respuesta para autenticación de cobertura
  • AuthCoverageResponse: Contenido de la respuesta con el token
  • AuthCoverageRequest: Modelo interno para comunicación con servicio de cobertura

Utilidades y servicios comunes:

  • SecurityUtil: Utilidades de seguridad y autenticación
  • CoverageClient: Cliente para comunicación con el mapa de coberturas
  • ConfigurationUtil: Gestión de configuraciones del sistema
  • AuditUtil: Auditoría de peticiones y respuestas

Patrones de diseño implementados:

  • Singleton Pattern: Para instancias únicas de servicios
  • Factory Pattern: Para creación de clientes HTTP
  • Strategy Pattern: Para diferentes tipos de autenticación

Componentes reutilizados:

  • BotBaseRequestHeader: Cabecera base para peticiones
  • BotBaseResponseHeader: Cabecera base para respuestas
  • BaseAudit: Modelo base para auditoría

Referencias cruzadas:

  • SecurityController: Controlador principal de seguridad
  • SecurityBusiness: Lógica de negocio de seguridad
  • CoverageClient: Cliente de comunicación con cobertura

Ejemplos de Request/Response

Solicitud (request)

json
{
  "WSRequestHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.636276659263253",
      "processingServer": null
    },
    "Property": [
      {
        "name": null,
        "value": null
      },
      {
        "name": null,
        "value": null
      }
    ]
  }
}

Respuesta exitosa

json
{
  "WSResponseHeader": {
    "System": {
      "name": "MAX",
      "correlationID": "LUZ-0.636276659263253",
      "processingServer": null
    },
    "Service": {
      "status": "OK",
      "responseDate": "2025-07-31T09:42:16.1354329Z",
      "processingServer": null,
      "statusDetail": [
        {
          "errorCode": "OK_01",
          "errorDetailCode": "La solicitud fue exitosa ",
          "errorMessage": "La solicitud LUZ-0.636276659263253 fue exitosa. Se genero el token de autenticacion",
          "errorMessageUser": null
        }
      ]
    },
    "Property": [
      {
        "name": null,
        "value": null
      }
    ]
  },
  "WSResponseBody": {
    "Token": "QjBNNy9uL090V0lBR3ErVW5TcVE0R0NYb0lDb2dRdytURklxN2hVMlV6QlUvVlRKZGJ3cXl3PT0="
  }
}

Respuesta de error

json
{
  "WSResponseHeader": {
    "System": {
      "Name": "SISTEMA_COBERTURA",
      "CorrelationID": "CORR-001-2024",
      "ProcessingServer": "SRV-PROD-01"
    },
    "Service": {
      "Status": "FAIL",
      "ResponseDate": "2024-12-19T10:30:00Z",
      "ProcessingServer": "SRV-PROD-01",
      "StatusDetail": [
        {
          "ErrorCode": "ERROR_06",
          "ErrorDetailCode": "Error en autenticación de cobertura",
          "ErrorMessage": "La solicitud no fue exitosa. Error en autenticación de cobertura",
          "ErrorMessageUser": "La solicitud no fue exitosa. Error en autenticación de cobertura"
        }
      ]
    },
    "Property": []
  },
  "WSResponseBody": {
    "Token": null
  }
}

Diagramas Técnicos

3.1 Flujo de datos

mermaid
graph TD
  A[Recepción de la solicitud] --> B[SecurityController]
  B --> C[SecurityBusiness]
  C --> D[Auditoría de entrada]
  D --> E[Conversión de datos]
  E --> F[Obtención del origen]
  F --> G[Verificación API]
  G --> H[Autenticación Coverage]
  H --> I[CoverageClient]
  I --> J[Generación token]
  J --> K[Respuesta final]

3.2 Arquitectura de clases

mermaid
classDiagram
  class SecurityController {
    +AuthCoverage_v1()
  }
  class SecurityBusiness {
    +AuthCoverage_v1()
  }
  class CoverageClient {
    +Authentication()
  }
  class SecurityUtil {
    +Authentication_Coverage()
  }
  SecurityController --> SecurityBusiness
  SecurityBusiness --> CoverageClient
  SecurityBusiness --> SecurityUtil

3.3 Secuencia de ejecución

mermaid
sequenceDiagram
  participant Cliente
  participant SecurityController
  participant SecurityBusiness
  participant CoverageClient
  participant ServicioCobertura
  Cliente->>SecurityController: POST /api/security/v1/authcoverage
  SecurityController->>SecurityBusiness: AuthCoverage_v1()
  SecurityBusiness->>SecurityBusiness: Auditoría entrada
  SecurityBusiness->>SecurityBusiness: Conversión datos
  SecurityBusiness->>SecurityBusiness: Obtener origen
  SecurityBusiness->>SecurityBusiness: Verificar API
  SecurityBusiness->>CoverageClient: Authentication()
  CoverageClient->>ServicioCobertura: POST /auth
  ServicioCobertura-->>CoverageClient: Token
  CoverageClient-->>SecurityBusiness: Token
  SecurityBusiness-->>SecurityController: BaseResponseAuthCoverage
  SecurityController-->>Cliente: Respuesta con token

Políticas y Consideraciones

Políticas de seguridad

Mecanismos de autenticación y autorización:

  • Validación de origen de la petición mediante configuración
  • Autenticación con credenciales específicas por sistema
  • Verificación de estado del API (encendido/apagado)

Validaciones de seguridad implementadas:

  • Validación de cabeceras de petición
  • Auditoría completa de todas las peticiones
  • Manejo seguro de tokens de autenticación
  • Validación de configuración de parámetros

Límites de tasa (rate limits):

  • Control mediante configuración de parámetros
  • Auditoría de todas las peticiones para monitoreo

SLAs aplicables:

  • Tiempo de respuesta esperado: < 2 segundos
  • Disponibilidad: 99.9%
  • Tolerancia a fallos: Configurable por sistema

Recomendaciones y mejores prácticas

Puntos de mejora específicos en el código:

  1. Implementar cache de tokens para mejorar rendimiento
  2. Agregar validación de expiración de tokens
  3. Implementar retry automático en caso de fallo del servicio de cobertura
  4. Mejorar logging de errores para facilitar debugging

Optimizaciones posibles:

  1. Implementar pool de conexiones HTTP para CoverageClient
  2. Agregar circuit breaker para el servicio de cobertura
  3. Implementar cache distribuido para tokens
  4. Optimizar serialización/deserialización de JSON

Consideraciones de mantenimiento importantes:

  1. Mantener actualizadas las configuraciones de parámetros
  2. Monitorear el rendimiento del servicio de cobertura
  3. Revisar periódicamente los logs de auditoría
  4. Validar la seguridad de los tokens generados

Sugerencias de seguridad aplicables:

  1. Implementar rotación automática de claves de autenticación
  2. Agregar validación de IP de origen
  3. Implementar rate limiting por IP/sistema
  4. Agregar validación de integridad de tokens