首页 > 解决方案 > Azure 应用程序网关阻止 SOAP 1.2 请求

问题描述

我正在重新配置现有的 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 应用程序网关/WAF 应该支持它。

标签: web-servicesazuresoapazure-application-gateway

解决方案


推荐阅读