Java Axis客户端创建双重Security标头

时间:2019-07-19 18:58:27

标签: java web-services soap axis

我正在使用Axis 1.x客户端来调用Web服务(SOAP)。生成存根之后,我可以调用Web服务,但是由于没有用户名/密码,因此出现身份验证错误。在存根上设置用户名和密码的所有尝试均无结果。并传递空值:

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

在发送请求之前尝试获取现有标头不会返回任何内容。因此,我以编程方式创建了标头并将其设置在存根上。它可以工作,但是现在发送了两个安全头,一个带有凭证,另一个带有“空”:

<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>

为什么要发送一个空的?有什么方法可以删除它以获得访问权限,以便我可以对其进行修改而不创建新的标头?

1 个答案:

答案 0 :(得分:0)

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