首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python suds UsernameToken

python suds UsernameToken
EN

Stack Overflow用户
提问于 2016-05-29 00:29:04
回答 1查看 1K关注 0票数 4

代码:

代码语言:javascript
复制
security = Security()
token = UsernameToken('b77a5c561934e089', 'kmfHkNZyn1U/pGAiY3+h0BoHdKI=')
security.tokens.append(token)
client.set_options(wsse=security)

我的问题是:当包含UsernameToken时,我会收到这样的报头:

代码语言:javascript
复制
   <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>

但我需要的是对web服务的这个需求的响应:

代码语言:javascript
复制
<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>

我怎样才能用肥皂来做到这一点呢?我找遍了整个互联网,但没有找到解决方案。

EN

回答 1

Stack Overflow用户

发布于 2017-05-24 10:46:08

您的代码是SOAP通用解决方案。您的web服务似乎需要自定义响应。

我想你的认证不起作用了吧?

尝试将响应marshall到请求者class中。此plugin允许您修改soap信封。您可以添加自己的属性。

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37501371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档