У меня установлен Identity Provider для утверждения SAML с использованием corePHP. Я использую curl для отправки запроса подтверждения поставщику услуг.CorePHP - SAMLSignOn не удалось: не удалось преобразовать строку с кодировкой base-64 в XML
Мой поставщик удостоверений находится на основной php, используя завиток.
Поставщик услуг производится с использованием componentspace saml2.0 в asp.net
Вот мой код:
$url = "https://sp.name.com/sso/saml";
$filename = "saml1.xml";
$read = fopen($filename, "r");
$XML = fread($read, filesize($filename));
fclose($read);
$XML_utf8 = utf8_encode($XML);
$XML64 = base64_encode($XML_utf8);
$data = "SAMLResponse=".$XML64."&RelayState=https://sp.name.com/sso/saml";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
Когда я запускаю этот скрипт на моем поставщика услуг следующих сообщений об ошибке генерируют:
Ошибка SAMLSignOn: не удалось преобразовать строку с кодировкой base-64 в XML.
[Исключение: SAMLSignOn не удалось:. Не удалось преобразовать базовый-64 закодированный строку в XML]
[SAMLSerializationException:. Не удалось преобразовать базовый-64 закодированный строку в XML]
Я уже потратил много времени на Эта проблема.
за одно именами параметров должны быть случай с поправкой: SAMLResponse и RelayState –
@HansZ. Спасибо за ответ, я также использовал SAMLResponse и RelayState для отправки запроса. Но поставщик услуг по-прежнему показывает ту же ошибку. Есть ли другой способ кодирования XML как base64? –
Распечатайте сгенерированную закодированную форму и подтвердите ее извне –