Java Axis 客户端创建双安全 header

标签 java web-services soap axis

我正在使用 Axis 1.x 客户端来调用 Web 服务 (SOAP)。生成 stub 后,我可以调用 Web 服务,但由于没有用户名/密码而出现身份验证错误。在 stub 上设置用户名和密码的所有尝试都不会产生任何结果。并传递空值:

<wsse:Security xmlns:wsse="... soapenv:mustUnderstand="0">
    <wsse:UsernameToken>
        <wsse:Username />
        <wsse:Password />
    </wsse:UsernameToken>
</wsse:Security>

在发送请求之前尝试获取现有 header 不会返回任何内容。因此,我以编程方式创建了一个 header 并将其设置在 stub 上。它有效,但现在发送了两个安全 header ,一个带有凭据,一个“空”:

<wsse:Security xmlns:wsse="..." soapenv:mustUnderstand="1">
    <wsse:UsernameToken xmlns:wsse="...">
        <wsse:Username>xxx</wsse:Username>
        <wsse:Password>xxx</wsse:Password>
        <wsse:Nonce xmlns:wsse="...">8mTkXig00vZnqC2XlPWJ4A==</wsse:Nonce>
        <wsu:Created xmlns:wsu="...">2019-07-19T18:46:57.048Z</wsu:Created>
    </wsse:UsernameToken>
</wsse:Security>
<wsse:Security xmlns:wsse="..." soapenv:mustUnderstand="0">
    <wsse:UsernameToken>
        <wsse:Username />
        <wsse:Password />
    </wsse:UsernameToken>
</wsse:Security>

为什么发送的是空的?有什么方法可以删除它来访问它,以便我可以修改它而不创建新的 header ?

最佳答案

我团队中的另一位开发人员发现有一个 UsernameHandler 实现类添加了安全 header ,该安全 header 是通过类路径上的某些 apache 配置文件配置的。删除了它,并且不再创建 header 。

关于Java Axis 客户端创建双安全 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57118279/

相关文章:

java - Azure 离线同步本地存储文档

java - 删除引用以帮助 GC 是一种好习惯吗?

java - 使用 MapReduce 查找靠近特定记录的所有记录

java - JSF 以编程方式呈现响应

java - REST Java 客户端无法调用请求

java - spring ws配置wsdl生成策略?

asp.net - 如何跟踪 ScriptService WebService 请求?

web-services - Visual Studio 2013 使用有效的 wsdl 文件创建服务数据源时出错

php - Python SOAP 客户端、授权

c# - 用于从 .NET Core 应用程序调用 WCF 服务发送 cookie 的中间件