SOAP (Simple Object Access Protocol) is a messaging protocol that enables applications to exchange structured XML messages in web services through fixed envelope formats and flexible transports, primarily HTTP, with formal service contracts defined in WSDL documents. Enterprise systems in financial, telecommunications, and government sectors depend on SOAP for integrations where formal service contracts and strict message typing are critical, but operations teams must manage DNS resolution, certificate validation, and XML security to prevent silent failures and service disruptions. Common failure modes include stale DNS records with long TTLs, certificate hostname mismatches in HTTPS deployments, oversized XML payloads exceeding gateway limits, and unvalidated XML input exposing services to injection attacks, making deliberate endpoint and security management essential for reliability.
So funktioniert SOAP
SOAP strukturiert jeden Datenaustausch als XML-Nachricht, die zwischen einem Client und einem Dienst gesendet wird. Das Nachrichtenformat ist durch die Spezifikation festgelegt, während der zugrunde liegende Transport flexibel ist und in der Regel über HTTP erfolgt.
- Beschreibung des Dienstes: Der Dienst veröffentlicht einen Vertrag, in der Regel ein WSDL-Dokument, in dem seine Operationen sowie die Nachrichtentypen aufgeführt sind, die jede Operation akzeptiert und zurückgibt.
- Erstellen des Envelopes: Der Client verpackt die Anfrage in einen SOAP-Envelope. Der Envelope enthält einen optionalen Header für Metadaten wie Sicherheits- oder Routing-Informationen sowie einen obligatorischen Body mit der Nutzlast der Anfrage.
- Über einen Transport senden: Der Client sendet den Envelope an den Service-Endpunkt, meist als Body einer HTTP-POST-Anfrage.
- Verarbeitung der Anfrage: Der empfangende Knoten analysiert das XML, verarbeitet etwaige Header-Blöcke und führt die angeforderte Operation aus.
- Antwort oder Fehler zurückgeben: Der Dienst antwortet mit einem SOAP-Envelope, der das Ergebnis enthält. Wenn die Verarbeitung fehlschlägt, enthält der Body ein Fehlerelement, das den Fehler beschreibt.
SOAP-Nachrichten können Zwischenstellen durchlaufen, die auf Header-Blöcke einwirken, bevor sie den endgültigen Empfänger erreichen. Erweiterungen wie WS-Security fügen eine vom Transport unabhängige Signierung und Verschlüsselung auf Nachrichtenebene hinzu.
Häufige SOAP-Probleme
Bei Clients ist der Hostname des Dienstes in der Regel konfiguriert oder in der WSDL eingebettet. Eine geänderte IP-Adresse mit einem alten A-Eintrag, der mit einer langen TTL zwischengespeichert ist, führt daher dazu, dass Anfragen an den falschen Host gesendet werden. Zu den Symptomen zählen Verbindungszeitüberschreitungen oder HTTP-Fehler bei einer Client-Gruppe, während andere Clients weiterhin funktionieren.
SOAP über HTTPS scheitert am TLS-Handshake, wenn der Zertifikatsname nicht mit dem vom Client verwendeten Hostnamen übereinstimmt. Dies tritt häufig auf, wenn ein Dienst hinter einen neuen Alias oder eine neue Load-Balancer-Adresse verlagert wird, ohne dass das Zertifikat neu ausgestellt wird.
Große „Envelopes“ mit Anhängen oder tief verschachtelten Elementen können die Größenbeschränkungen für den Nachrichtentext von Proxys oder Gateways überschreiten und zu Zeitüberschreitungen bei Anfragen oder HTTP-413-Antworten führen. Das Parsen großer Nachrichten erhöht zudem die CPU-Auslastung des Dienstes, was wie ein Netzwerkproblem aussehen kann.
Dienste, die XML ohne Schemavalidierung akzeptieren oder die Auflösung externer Entitäten zulassen, können durch manipulierte Dokumente Angriffen auf externe XML-Entitäten und Denial-of-Service-Angriffen ausgesetzt sein. Der Dienst kann zudem unerwartete ausgehende DNS-Abfragen durchführen.
Eine auf dem Server generierte WSDL enthält häufig einen internen Hostnamen oder eine private Adresse in der Angabe des Endpunkts. Externe Clients importieren den Vertrag zwar erfolgreich, können den Endpunkt jedoch anschließend nicht auflösen oder erreichen.