python suds UsernameToken
代码: 我的问题是:当包含UsernameToken时,我会收到这样的头:python suds UsernameToken,python,soap,suds,Python,Soap,Suds,代码: 我的问题是:当包含UsernameToken时,我会收到这样的头: security = Security() token = UsernameToken('b77a5c561934e089', 'kmfHkNZyn1U/pGAiY3+h0BoHdKI=') security.tokens.append(token) client.set_options(wsse=security) b77a5c561934e089 KMFHNZYN1U/pGAiY3+h0BoHdKI= 但我需要
security = Security()
token = UsernameToken('b77a5c561934e089', 'kmfHkNZyn1U/pGAiY3+h0BoHdKI=')
security.tokens.append(token)
client.set_options(wsse=security)
b77a5c561934e089
KMFHNZYN1U/pGAiY3+h0BoHdKI=
但我需要的是对web服务的这一要求的响应:
<SOAP-ENV:Header>
<wsse:Security mustUnderstand="true">
<wsse:UsernameToken>
<wsse:Username>b77a5c561934e089</wsse:Username>
<wsse:Password>kmfHkNZyn1U/pGAiY3+h0BoHdKI=</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</SOAP-ENV:Header>
我怎么用肥皂水呢?搜索了整个互联网,但没有找到解决方案。您的代码是SOAP通用解决方案。您的web服务似乎需要自定义响应 我想你的身份验证不起作用吧 尝试
marshall
将您的响应放入您的请求者class
。这允许您修改soap
信封。
您可以添加自己的属性
<sp:SignedSupportingTokens xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10 />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SignedSupportingTokens>
本例中的
commons
是什么?
class MyRequesterClass(object):
class _myServiceMarshalled(MessagePlugin):
def marshalled(self, context):
commons.set_service_common_header(context, "yourService")
body = context.envelope.getChild('Body')
service = body.getChild("childWhereYouWantAddYourCustomXML")
service.attributes.append(Attribute("sp:IncludeToken", "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/AlwaysToRecipient"))
etc, etc