gpt4 book ai didi

python - 如何使用 zeep 为签名添加时间戳?

转载 作者:太空宇宙 更新时间:2023-11-04 02:47:49 27 4
gpt4 key购买 nike

我正在尝试创建一个使用 WSDL 文件并生成适当的 SOAP 消息的客户端。这就是我创建客户端的方式:

client = Client(
wsdl=wsdl
,transport = transport
,wsse = Signature('key.pem', 'cert.pem')
)

zeep 代码中的注释说它应该生成类似于此的 XML:

  <soap:Header>
<wsse:Security mustUnderstand="true">
<wsu:Timestamp>
<wsu:Created>2015-06-25T21:53:25.246276+00:00</wsu:Created>
<wsu:Expires>2015-06-25T21:58:25.246276+00:00</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>

但是它没有添加 mustUnderstand 属性并且 TimeStamp 是空白的。有谁知道如何确保正确设置这些字段?

最佳答案

    from datetime import datetime, timedelta    from lxml import etree    from zeep import Client    from zeep.wsse import utils    from zeep.plugins import HistoryPlugin    # Справочники    wsdl = 'http://claim-test2.isb.az:8903/cib/svc/wsdl/codetable.wsdl'    username, password = 'ws', '********'    bussines_user = '********'    class UsernameTokenTimestamp:        def __init__(self, username, password=None):            self.username = username            self.password = password        def apply(self, envelope, headers):            security = utils.get_security_header(envelope)            created = datetime.now()            expired = created + timedelta(seconds=5 * 60)            token = utils.WSSE.UsernameToken()            token.extend([                utils.WSSE.Username(self.username),                utils.WSSE.Password(self.password),                utils.WSSE.Nonce('43d74dda16a061874d9ff27f2b40e017'),                utils.WSSE.Created(utils.get_timestamp(created)),            ])            timestamp = utils.WSU('Timestamp')            timestamp.append(utils.WSU('Created', utils.get_timestamp(created)))            timestamp.append(utils.WSU('Expires', utils.get_timestamp(expired)))            security.append(timestamp)            security.append(token)            #              # headers['Content-Type'] = 'application/soap+xml;charset=UTF-8'            return envelope, headers        def verify(self, envelope):            pass    history = HistoryPlugin()    client = Client(        wsdl=wsdl,        wsse=UsernameTokenTimestamp(username=username, password=password),        plugins=[history]    )

关于python - 如何使用 zeep 为签名添加时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44642460/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com