мыльный клиент — Php SoapClient с WS-Security не может аутентифицироваться, а SOAPUI может

Я подключаюсь к веб-сервису с SOAPUI, у меня правильные учетные данные. Сервер требует PasswordDigest, с данное время и т.д. Когда я звоню в сервис с SOAPUI, оно работает.

Когда я использую WSSoapClient класс php от https://gist.github.com/silasrm/a57a1e3af165cb43644b712192625a3b

или немного разработанная версия от https://gist.github.com/Turin86/5569152,
Я получаю:

  • Обнаружена ошибка при обработке заголовка

  • Маркер безопасности не может быть аутентифицирован или авторизован

соответственно.

Руководство по MS https://msdn.microsoft.com/en-us/library/ms977327.aspx объясняет:

Одноразовый номер имеет длину 16 байтов и передается как закодированное в base64 значение.
Приведенные там примеры показывают, что данное время отправлено base64’d.

В первой версии WSSoapClient данное время случайное число (не обязательно имеет 16 байтов), это pack () ‘d и base64 ()’ d.

Во второй версии данное время случайное число только sha1’d. Я не думаю, что это может быть правильно, так как «оригинальное» содержание данное время должен быть соединен с временем и паролем, затем base64 (pack (sha1 ())).

Правильный заголовок из SOAPUI и ошибочный заголовок из мыльных клиентов php выглядят одинаково, за исключением вычисляемых значений:

<wsse:UsernameToken wsu:Id="UsernameToken-01010101010101010101010101">
<wsse:Username>XXXXXXXX</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">jbpPIWuudp4l/l+ZqoR4iAN08lU=</wsse:Password>
<wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">yXy5R5w6I3km75hha8mYqg==</wsse:Nonce>
<wsu:Created>2018-08-27T09:07:54.101Z</wsu:Created>

Короче говоря: у вас есть рабочая версия некоторого ws-security SoapClient в php?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]