从代理请求基本身份验证后面的Web服务进行通信

时间:2013-07-02 09:32:11

标签: java web-services webservice-client jbossws

我使用WSConsume从WSDL文件生成了Web Serice客户端存根。然后,在客户端代码中使用生成的存根将数据发送到Web服务。

一切正常。即客户端能够与Web服务进行通信并交换数据和所有内容。

客户端部署在代理服务器后,我的问题就开始了。我也完成了大部分内容。我们所做的是在客户端启动时设置以下JVM属性。

  

http.proxyHost,http.proxyPort,https.proxyHost和https.proxyPort

我知道这不是建议的,我们将及时迁移到ProxySelector。但是现在只要Proxy不需要身份验证,这对我们有用。

要解决身份验证问题,我确实覆盖了默认的PasswordAuthentication

Authenticator.setDefault(new Authenticator() {
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(httpsProxyUser, httpsProxyPassword.toCharArray());
    }
});

大多数情况下这也很有效。我知道这就是通常所说的NTLM身份验证。

当代理期待基本身份验证时,我的梦魇就开始了。从我到目前为止所理解的是,为了使这种认证机制起作用,我们需要在请求属性中设置Proxy-Authorization标头。如果我有权访问HTTP客户端对象,这又可以轻松完成。

但是当使用通过wsconsume生成的Stub时如何做到这一点?

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是使用以下JVM选项。这个对我有用。

  

-Dhttp.auth.preference = “基本”