SOAPpy - как передать заголовок безопасности? - PullRequest
2 голосов
/ 10 июня 2011

Я в настоящее время разрабатываю веб-сервис на python для приложения, использующего Axis2 WS-Security

, упрощенный соответствующий код -

from SOAPpy import SOAPProxy
from SOAPpy import WSDL

file = 'path/to/my/file?wsdl'
server = WSDL.Proxy(file)

server.foo(bar)

, когда я получаю:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\SOAPpy\Client.py", line 471, in __call__
    return self.__r_call(*args, **kw)
  File "C:\Python27\lib\site-packages\SOAPpy\Client.py", line 493, in __r_call
    self.__hd, self.__ma)
  File "C:\Python27\lib\site-packages\SOAPpy\Client.py", line 407, in __call
    raise p
SOAPpy.Types.faultType: <Fault soapenv:Client: WSDoAllReceiver: Incoming message
 does not contain required Security header: >

Чтение документа для WS-безопасности axis2 и приложения, предоставляющего веб-сервисы. Я предполагаю, что он запрашивает у меня аутентификацию токена пользователя, например

<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
<wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-12468716">
<wsu:Created>
2008-06-23T13:17:13.841Z
</wsu:Created>
<wsu:Expires>
2008-06-23T13:22:13.841Z
</wsu:Expires>
</wsu:Timestamp>
<wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-31571602">
<wsse:Username>
alice
</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
bobPW
</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>

при выполнении запроса, поэтому Q: какя могу добавить это к запросу SOAPpy?

1 Ответ

1 голос
/ 24 декабря 2011

Ознакомьтесь с документацией по добавлению заголовков в мыльный запрос (https://svn.origo.ethz.ch/playmobil/trunk/contrib/pywebsvcs/SOAPpy/docs/UsingHeaders.txt). Таким образом, вы можете добавить свои собственные пользовательские заголовки к любому запросу.

Надеюсь, это поможет

...