Как добавить атрибут для UsernameToken в заголовок wsse? - PullRequest
0 голосов
/ 15 января 2019

Я был сделан 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? Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...