防火墙与 Soap(电子账单 API)

防火墙与 Soap(电子账单 API)

这是一个复杂的问题,因为它同时包含配置和编程,但 Sophos 支持和电子账单服务(消费者 API)都没有给我答案。

背景/场景:

我的办公室里有一台安装了 LAMP 的 HP 专用服务器,与所有计算机一样,它位于 Sophos 防火墙后面,我正在尝试使用外部的使用 PHP 通过 SOAP 客户端访问电子账单 API。

执行的 PHP 脚本如下:

  • 环境:
ini_set("soap.wsdl_cache", 0);
ini_set("soap.wsdl_cache_enabled", 0);
ini_set('max_input_time', -1);
ini_set('default_socket_timeout', 600);
  • 追求品质
$url = 'https://url.com/ws/obj/v1.0/Service.svc?singleWsdl';
$ws = new SoapClient($url );
  • 为发展
$url = 'https://url.com/ws/obj/v1.0/Service.svc?singleWsdl';

$ws = new SoapClient($url , [
    'trace'              => true,
    'keep_alive'         => false,
    'connection_timeout' => 600,
    'cache_wsdl'         => WSDL_CACHE_NONE,
    'compression'        => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE,
]);
  • api服务指定的方法的消费:
    $tokenCompany= '******************';
    $tokenPassword = '******************';

    $parametros = [
        'tokenEmpresa'  => $tokenCompany,
        'tokenPassword' => $tokenPassword,
        'documento'     => $bill,
    ];

    $result = $wsPa->__soapCall('Enviar', [$parametros]);

网络外执行的结果(无防火墙)

  • 最后请求:

kqyyyeverpza_tfhkal+?+X66Xd1d;0000101000000350012023-11-02T08:32:56-05:00011111111兴趣信息测试012155596713-2-201559FE generalAv.巴尔博亚1-2-3博卡斯德尔托罗昌吉诺拉瓜比托997-8243wnunez@avipacinc.comPACuadernosTund1.002020-12-251410cm1.000.001.000.000.001.0000.0001.00000.000.000.00CuadernosTund1.002020-12-251410cm1.000.001.000.000.001.0000.0001.00000.000.000.002.000.000.000.002.402.400.00122.40022.40

  • 请求标头:

字符串(273)“POST /ws/obj/v1.0/Service.svc HTTP/1.1 主机:url.com 连接:关闭用户代理:PHP-SOAP/7.4.33 接受编码:gzip,deflate 内容类型:text/xml;charset=utf-8 SOAPAction:“http://tempuri.org/IService/Enviar”内容长度:4516

  • 最后回应

字符串(1189)“102错误文件重复FE0120000033159-58-250697-1000002023110200000000350010128662140712https://dgi-fep-test.mef.gob.pa:40001/Consultas/FacturasPorQR?chFE=FE0120000033 159-58-250697-1000002023110200000000350010128662140712&iAmb=2&digestValue=OMl5rShuhLn3NPsqci+GgAIOmwrwAlEgupAz07KcM0Y=&jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6Ikp XVCJ9.eyJjaEZFIjoiRkUwMTIwMDAwMDMzMTU5LTU4LTI1MDY5Ny0xMDAwMDAyMDIzMTEwMjAwMDAwMDAwMzUwMDEwMTI4NjYyMTQwNzEyIiwiaUFtYiI6IjIiLCJkaWdlc3RWYWx1ZSI6Ik9NbDVyU2h1 aExuM05Qc3FjaStHZ0FJT213cndBbEVndXBBejA3S2NNMFk9In0.PPrSt0j7-CYWKY6U_cWl--YCSQtSFOh8Ujm_f_EuqY42023-11-02T07:11:430000155596713-2-201520230000000005329969"

  • 响应标头

字符串 (284)“HTTP/1.1 200 OK 日期:2023 年 11 月 2 日星期四 13:32:57 GMT 内容类型:text/xml;字符集 = utf-8 内容长度:969 连接:关闭缓存控制:私有内容编码:gzip 变化:接受编码服务器:Microsoft-IIS/10.0 X-AspNet-Version:4.0.30319 X-Powered-By:ASP.NET

笔记:我们要评估的是沟通,而不是计费系统是否正确处理文件,请参阅下一点。

网络内部执行结果(有防火墙)ERROR

  • 最后请求:

kqyyyeverpza_tfhkal+?+X66Xd1d;0000101000000350012023-11-02T08:32:56-05:00011111111兴趣信息测试012155596713-2-201559FE generalAv.巴尔博亚1-2-3博卡斯德尔托罗昌吉诺拉瓜比托997-8243wnunez@avipacinc.comPACuadernosTund1.002020-12-251410cm1.000.001.000.000.001.0000.0001.00000.000.000.00CuadernosTund1.002020-12-251410cm1.000.001.000.000.001.0000.0001.00000.000.000.002.000.000.000.002.402.400.00122.40022.40

  • 请求标头:

字符串(273)“POST /ws/obj/v1.0/Service.svc HTTP/1.1 主机:url.com 连接:关闭用户代理:PHP-SOAP/7.4.33 接受编码:gzip,deflate 内容类型:text/xml;charset=utf-8 SOAPAction:“http://tempuri.org/IService/Enviar”内容长度:4516

  • 最后回应

无效的

  • 响应标头

无效的

  • 错误输出:

SoapFault 异常:[HTTP] 在 /var/www/html/test.php:613 中获取 http 标头时出错堆栈跟踪:#0 [内部函数]:SoapClient->__doRequest() #1 /var/www/html/test.php(613): SoapClient->__soapCall() #2 {main}

所以我已经到了不知道该怎么做的地步,我想到两件事:

  • 确定 Sophos 防火墙是否需要额外的配置来通过透明规则传递 API 标头/响应。

  • 确定是否需要向 SOAP 客户端配置添加任何其他内容,以防止防火墙阻止 API 使用(响应标头)。

两位支持人员都不知道该怎么做,我更不知道,如果有经验的人处理过这个问题,我将非常感激,至少能得到一条评论或回复。

相关内容