Source code for rinse.wsse
"""SOAP client."""
NS_WSSE = 'http://docs.oasis-open.org/wss/2004/01/' \
'oasis-200401-wss-wssecurity-secext-1.0.xsd'
[docs]def append_wsse_headers(msg, username, password):
"""Add WSSE (security) headers.
>>> from rinse.wsse import append_wsse_headers
>>> import lxml.usedoctest
>>> from rinse.message import SoapMessage
>>> from rinse.util import printxml
>>> msg = SoapMessage()
>>> f123 = msg.elementmaker(
... 'f123',
... 'http://www.fabrikam123.example/svc53',
... )
>>> msg.body = f123.Delete(f123.maxCount('42'))
>>> append_wsse_headers(msg, 'alice', '$uper-5ecret')
>>> printxml(msg.etree())
<soapenv:Envelope xmlns:f123="http://www.fabrikam123.example/svc53"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>alice</wsse:Username>
<wsse:Password>$uper-5ecret</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<f123:Delete>
<f123:maxCount>42</f123:maxCount>
</f123:Delete>
</soapenv:Body>
</soapenv:Envelope>
"""
# add WSSE headers
wsse = msg.elementmaker('wsse', NS_WSSE)
msg.headers.append(
wsse.Security(
wsse.UsernameToken(
wsse.Username(username),
wsse.Password(password),
),
),
)