Azure应用程序网关阻止SOAP 1.2请求

时间:2018-07-03 16:50:16

标签: web-services azure soap azure-application-gateway

我正在重新配置现有的SOAP Web服务,使其在具有Web应用程序防火墙的Azure应用程序网关后面运行。

SOAP Web服务是用C#编写的,并作为Azure云服务中的Web角色在Azure中运行。目前,它同时支持SOAP 1.1和SOAP 1.2。

我已将启用Web应用程序防火墙的Azure应用程序网关配置为在此服务之前运行。 WAF正在使用OWASP 3.0规则集。

从SoapUI发送测试请求,看来应用程序网关WAF允许通过SOAP 1.1请求,但阻止了SOAP 1.2请求(返回403错误)。在文档或其他任何内容中,我找不到任何引用说明为什么会发生这种情况。我知道这是WAF,因为禁用它会允许SOAP 1.2请求通过。

(正在工作的)SOAP 1.1请求的HTTP标头如下所示(已删除服务和名称空间URL):

POST http://{serviceURL}/{service}.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: "http://{namespaceURL}/{method}"
Content-Length: 3672
Host: {serviceURL}
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

(无效的)SOAP 1.2请求的HTTP标头如下所示:

POST http:/{serviceURL}/{service}.asmx HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: application/soap+xml;charset=UTF-8;action="http://{namespaceURL}/{method}"
Content-Length: 3652
Host: {serviceURL}
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

查看WAF日志,我 认为问题在于对Content-Type的更改,基于我对SOAP 1.2的理解(不是很深入),这是正确的。

任何想法都值得赞赏。似乎SOAP的使用范围仍然足够广,Azure Appliction Gateway / WAF应该支持它。

0 个答案:

没有答案