当SSL终止后,WSDL绑定URL将协议更改为HTTP

问题描述 投票:2回答:1

我们有一个简单的jax-ws SOAP服务器,由Apache CXF 3.2.6支持,采用独立(自托管)模式,使用嵌入式Jetty。首先使用CXF的wsdl2java生成服务器wsdl-first。 WSDL是类路径上的文件,该物理WSDL文件在https://....元素的location属性中具有soapbind:address

启动时,服务器发布到http://0.0.0.0:8080。服务器还位于SSL终端后面,该终端路由https://external-name - > SSL终止 - > http://internal-name:8080,因此外部服务及其WSDL可在https://external-name获得。

问题是当通过https://external-name?wsdl从部署的服务器请求WSDL时,CXF将生成的文件中的location元素的soapbind:address属性更改为http://external-name(将协议从HTTPS更改为HTTP并保留其他所有内容),这会导致生成问题客户端代理,Soap UI等

最糟糕的是,我们的合作伙伴的SOA不能使用我们的服务,它只能从WSDL强制使用已发布的位置。

我们如何解决这个问题,除了删除SSL终止并让CXF自己处理SSL? (这很可怕,因为Java密钥库维护的噩梦并且必须在服务器实例中存储公司范围的证书+私钥)。

soap wsdl cxf jax-ws embedded-jetty
1个回答
2
投票

您可以在配置中将所需地址设置为publishedEndpointUrl。见:http://cxf.apache.org/docs/jax-ws-configuration.html

© www.soinside.com 2019 - 2024. All rights reserved.