Я был сделан WSSE Soap Header в PHP. Как я могу добавить атрибут к тегу UsernameToken?
Я использую SoapVar для создания заголовка
$auth = new stdClass();
$auth->Username = new SoapVar($user, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$auth->Password = new SoapVar($passdigest, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$auth->Nonce = new SoapVar($encoded_nonce, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$auth->Created = new SoapVar($created, XSD_STRING, NULL, $this->wss_ns, NULL, $this->wss_ns);
$username_token = new stdClass();
$username_token->UsernameToken = new SoapVar($auth, SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'UsernameToken', $this->wss_ns);
$security_sv = new SoapVar(
new SoapVar(
$username_token,
SOAP_ENC_OBJECT,
NULL,
$this->wss_ns,
'UsernameToken',
$this->wss_ns
),
SOAP_ENC_OBJECT, NULL, $this->wss_ns, 'Security', $this->wss_ns);
parent::__construct($this->wss_ns, 'Security', $security_sv, true);
Результат от веб-сервиса: «Переданный элемент не был SOAPElement или не является правильным UsernameToken». Причина, почему, вероятно, неправильный тег UsernameToken. Мне нужно добавить атрибут wsu: Id.
вывод XML из моего заголовка
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://system.erif.pl/ws/schemas" xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<SOAP-ENV:Header>
<ns2:Security SOAP-ENV:mustUnderstand="1">
<ns2:UsernameToken>
<ns2:Username>username</ns2:Username>
<ns2:Password>lD25MlnmRXtxjT8I2cv0iMhb0yQ=</ns2:Password>
<ns2:Nonce>MTA5NDY2Nji5OA==</ns2:Nonce>
<ns2:Created>2019-01-12T09:19:43Z</ns2:Created>
</ns2:UsernameToken>
</ns2:Security>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:GetReportRequest/>
</SOAP-ENV:Body>
Тег UsernameToken должен иметь такой атрибут
<wsse:UsernameToken wsu:Id="UsernameToken-1"
Как правильно добавить атрибут для UernameToken в SoapVar? Спасибо