gpt4 book ai didi

wcf - WCF 响应中的 MustUnderstand 属性导致 Java/Axis 客户端出错

转载 作者:行者123 更新时间:2023-12-02 04:01:19 25 4
gpt4 key购买 nike

我们开发了一个带有 usernameToken 身份验证的 WCF4 服务,Java/Axis 客户端正在使用该服务(我们无法控制)。

我可以看到进来的请求的主体看起来像这样......

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wss:Security xmlns:wss="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wss:UsernameToken>
<wss:Username>username</wss:Username>
<wss:Password>password</wss:Password>
</wss:UsernameToken>
</wss:Security>
</soapenv:Header>
<soapenv:Body>
{snipped}
</soapenv:Body>
</soapenv:Envelope>

我们返回的响应看起来像这样......
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<u:Timestamp u:Id="_0">
<u:Created>2012-05-02T01:23:12.711Z</u:Created>
<u:Expires>2012-05-02T01:28:12.711Z</u:Expires>
</u:Timestamp>
</o:Security>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
{snipped}
</s:Body>
</s:Envelope>

问题是响应中的 s:mustUnderstand="1"属性。这会在 Java/Axis 客户端中导致“必须理解检查失败”错误。

有谁知道如何配置 WCF 以删除此 s:mustUnderstand 属性或至少将其设置为“0”而不是“1”?

最佳答案

我们想出的解决此互操作问题的解决方案是更改为自定义绑定(bind)并指定 includeTimestamp="false"属性。通过这样做,时间戳(创建和过期)没有添加到响应中,因此整个安全 header 消失了 - 包括导致所有问题的 mustUnderstand 属性。

<customBinding>
<binding name="customBindingConfig">
<security authenticationMode="UserNameOverTransport" includeTimestamp="false" />
<textMessageEncoding messageVersion="Soap11" />
<httpTransport />
</binding>
</customBinding>

所以现在的响应看起来像这样......
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
{snipped}
</s:Body>
</s:Envelope>

关于wcf - WCF 响应中的 MustUnderstand 属性导致 Java/Axis 客户端出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10406972/

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