PHP SoapClient не разрешает базовую аутентификацию

#php #soap #https #wsdl #authorization

Вопрос:

Я должен интегрировать службу с WSDL в свой веб-сайт, и для этого требуется базовая аутентификация по протоколу HTTPS.

Я разрешил часть https с контекстом потока create verify_peer в значение false, но вызов soap не работает, и я не знаю, как отправить базовую авторизацию.

Пример из SOAPUI:

 POST XXXX
HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
SOAPAction: ""
Authorization: Basic encoded
Content-Length: 862
Host: host
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
 

Пример на PHP:

 $options = [
          'trace'      => true,
          'exceptions' => true,
          'cache_wsdl' => WSDL_CACHE_NONE,
          'stream_context' => stream_context_create([
            'ssl' => [
              'verify_peer' => false,
              'verify_peer_name' => false,
              'allow_self_signed' => true,
            ]
          ])
        ];

        $client = new SoapClient($this->wsdl, $options);
        //This works and allows me to read the soapfunctions
        $header = new SoapHeader($this->wsdl, 'Authorization', 'Basic etc');
        $client->__setSoapHeaders($header);
        $response = $client->__soapCall("XXX", $data);
        //This breaks an exception and it contains 401 error in authorization
 

И getlastrequestheader не содержит авторизации:

 POST XXXX HTTP/1.1
Host: URL
Connection: Keep-Alive
User-Agent: PHP-SOAP/7.2.19
Content-Type: text/xml; charset=utf-8
SOAPAction: "XXX"
Content-Length: 833
 

Проблема в том, что мне нужно отправить заголовок только для вызова soap, а не для soapclient, и я попробовал SOAPHeader и множество вариантов, и любой из них работает.

Есть какие-нибудь идеи?