SOAP (Simple Object Access Protocol) is a messaging protocol for exchanging structured XML messages between applications in web services, commonly carried over HTTP with formal service contracts defined in WSDL documents. The protocol remains critical in enterprise systems such as financial, telecommunications, and government integrations where formal contracts and strict message typing are essential, but operations teams must actively manage DNS records, certificates, and endpoint validation to prevent silent failures. Key operational challenges include stale DNS records, certificate and hostname mismatches, oversized XML payloads, and unvalidated XML input that exposes services to security risks, requiring deliberate decisions about where transport-level TLS protection ends and message-level security begins.
Cómo funciona SOAP
SOAP estructura cada intercambio como un mensaje XML enviado entre un cliente y un servicio. El formato del mensaje viene determinado por la especificación, mientras que el protocolo de transporte subyacente es flexible y suele ser HTTP.
- Describir el servicio: El servicio publica un contrato, normalmente un documento WSDL, que enumera sus operaciones y los tipos de mensajes que cada una de ellas acepta y devuelve.
- Creación de la envoltura: el cliente envuelve la solicitud en una envoltura SOAP. La envoltura contiene un encabezado opcional para metadatos, como información de seguridad o de enrutamiento, y un cuerpo obligatorio con la carga útil de la solicitud.
- Envío a través de un protocolo de transporte: el cliente envía el sobre al punto final del servicio, normalmente como cuerpo de una solicitud HTTP POST.
- Procesar la solicitud: el nodo receptor analiza el XML, gestiona los bloques de encabezado y ejecuta la operación solicitada.
- Devolver una respuesta o un error: el servicio responde con una envoltura SOAP que contiene el resultado. Si el procesamiento falla, el cuerpo contiene un elemento de error que describe el problema.
Los mensajes SOAP pueden pasar por intermediarios que actúan sobre los bloques de encabezado antes de que el destinatario final los reciba. Extensiones como WS-Security añaden la firma y el cifrado a nivel de mensaje, independientemente del transporte.
Problemas habituales con SOAP
Los clientes suelen tener el nombre de host del servicio configurado o integrado en el WSDL, por lo que un cambio en la dirección IP con un registro A antiguo almacenado en caché con un TTL prolongado envía las solicitudes al host equivocado. Los síntomas son tiempos de espera de conexión agotados o errores HTTP en un grupo de clientes, mientras que otros funcionan correctamente.
SOAP sobre HTTPS falla en el protocolo de enlace TLS si el nombre del certificado no coincide con el nombre de host que utiliza el cliente. Esto suele ocurrir después de que un servicio se traslade a una nueva dirección de alias o de equilibrador de carga sin volver a emitir el certificado.
Los «envelopes» de gran tamaño con archivos adjuntos o elementos profundamente anidados pueden superar los límites de tamaño del cuerpo de los mensajes del proxy o la pasarela y provocar tiempos de espera en las solicitudes o respuestas HTTP 413. El análisis de mensajes de gran tamaño también aumenta el uso de la CPU en el servicio, lo que puede parecer un problema de red.
Los servicios que aceptan XML sin validación de esquemas o que permiten la resolución de entidades externas pueden quedar expuestos a ataques de entidades externas XML y a denegaciones de servicio a través de documentos manipulados. El servicio también puede realizar consultas DNS salientes inesperadas.
Un WSDL generado en el servidor suele incluir un nombre de host interno o una dirección privada en la ubicación de su punto final. Los clientes externos importan el contrato correctamente, pero luego no consiguen resolver o acceder al punto final.