Python + SOAP + Suds + WSSE + WS Adressing
Verfasst: Donnerstag 2. Januar 2014, 10:29
Servus liebe Python-Gemeinde,
ich sitze hier gerade an einem Problem, bei welchem ich leider nicht weiter komme und auf Eure Hilfe hoffe. Es geht um einen 'simplen' SOAP-Client, welcher anhand einer Spezifikation in WSDL Form mit WS-Security und WS-Adressing die notwendigen Methoden zur Verfügung stellen soll.
Da Python per Default weder WSSE noch WSA beherrscht, habe ich mich für SUDS entschieden, da ich damit bisher gute Erfahrungen gemacht habe. WSSE funktioniert mit SUDS hervorragend, leider sehe ich aber bzgl. WSA kein Licht am Horizont.
Folgenden Fehler wirft das folgende Script: Server raised fault: 'Error in the Internal configuration.'
Dies liegt 100%ig an dem fehlenden WS Addressing, da dies für den Dienst vorrausgesetzt wird. Mittels SOAPUi habe ich alles geprüft, Dienst funktioniert und die Funktionen werden mir auch zurück geliefert. Leider kann ich diese aber ohne WSA nicht nutzen. Hat jemand von Euch bereits eine Implementierung von WSA+WSSE mittels SUDS geschrieben?
Über Tipps wäre ich sehr dankebar.
ich sitze hier gerade an einem Problem, bei welchem ich leider nicht weiter komme und auf Eure Hilfe hoffe. Es geht um einen 'simplen' SOAP-Client, welcher anhand einer Spezifikation in WSDL Form mit WS-Security und WS-Adressing die notwendigen Methoden zur Verfügung stellen soll.
Da Python per Default weder WSSE noch WSA beherrscht, habe ich mich für SUDS entschieden, da ich damit bisher gute Erfahrungen gemacht habe. WSSE funktioniert mit SUDS hervorragend, leider sehe ich aber bzgl. WSA kein Licht am Horizont.
Folgenden Fehler wirft das folgende Script: Server raised fault: 'Error in the Internal configuration.'
Dies liegt 100%ig an dem fehlenden WS Addressing, da dies für den Dienst vorrausgesetzt wird. Mittels SOAPUi habe ich alles geprüft, Dienst funktioniert und die Funktionen werden mir auch zurück geliefert. Leider kann ich diese aber ohne WSA nicht nutzen. Hat jemand von Euch bereits eine Implementierung von WSA+WSSE mittels SUDS geschrieben?
Über Tipps wäre ich sehr dankebar.
Code: Alles auswählen
#!/usr/bin/python2.7
# Imports
import suds
import logging
from suds.client import Client
from suds.wsse import *
# Logging Optionen
logging.basicConfig(level=logging.DEBUG)
#logging.getLogger('suds.client').setLevel(logging.DEBUG)
#logging.getLogger('suds.transport').setLevel(logging.DEBUG)
#logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG)
#logging.getLogger('suds.wsdl').setLevel(logging.DEBUG)
# Variablen setzen
WSDL_URL = 'https://webservice.tld/hrb.wsdl'
WSSE_USERNAME = 'username'
WSSE_PASSWORD = 'password'
wsans = ('wsa', 'http://schemas.xmlsoap.org/ws/2004/08/addressing')
#mustAttribute = Attribute('SOAP-ENV:mustUnderstand', 'true')
# URL Detail
client = Client(WSDL_URL)
# WSSE Security
security = Security()
token = UsernameToken(WSSE_USERNAME, WSSE_PASSWORD)
token.setnonce()
token.setcreated()
security.tokens.append(token)
#security.tokens.append(Timestamp())
client.set_options(wsse=security)
# Abfragen
try:
result = client.service.sammelabruf('nutzer','passwort','parameter1','2013-12-01','2013-12-29','parameter4')
print result
except suds.WebFault, e:
print e