CorePHP - SAMLSignOn 失败:无法将 base-64 编码字符串转换为 XML

CorePHP - SAMLSignOn failed: Failed to convert the base-64 encoded string into XML

我已经使用 corePHP 为 SAML 断言设置了身份提供程序。我正在使用 curl 向服务提供商发送断言请求。

我的身份提供商在核心 php 上使用 curl。

Service Provider 是在 asp.net

中使用 componentspace saml2.0 创建的

这是我的代码:

$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 失败:无法将 base-64 编码字符串转换为 XML。]
[SAMLSerializationException:无法将 base-64 编码字符串转换为 XML。]

我已经在这个问题上花了很长时间了。

证书不匹配和 saml 断言格式存在问题。所以我们切换到 asp.net 并停止使用 PHP 来完成任务。现在我们在 asp.net

中使用 COMPONENTSPACE SAML2.0 库

问题是:我们如何使用 asp.net 运行 php 代码

ANS: 我们向 asp.net 代码发送一个 api 请求和登录凭据并 asp.net 调用服务提供商和 returns 我们重定向 url.

希望这对您有所帮助