我将 phpCAS 与 SAML 一起使用。当我打开登录 URL 时,我被重定向到 idp 并且可以照常登录。重定向 [成功登录] 后,phpCAS 尝试使用不完整的 URL 进行验证。它缺少主机/上下文https://idp.whatever.com/login_to_cas/here
,仅包括该serviceValidate/?ticket=
部分。
我收到这条消息:
Curl error: Could not resolve host: serviceValidate; Name or service not knownArray ( [url] => HTTP://serviceValidate/?ticket=[ticket]
phpCAS 日志没有显示错误消息,它在以下位置结束:
Redirect to : [idp url]/login?service=[referrer] [Client.php:1635]
exit()
这就是我在脚本中设置 phpCAS 的方式:
phpCAS::setDebug();
phpCAS::setVerbose(true);
phpCAS::client(SAML_VERSION_1_1, $cas_host, $cas_port, $cas_context);
phpCAS::setNoCasServerValidation();
if(!phpCAS::isAuthenticated()){
phpCAS::forceAuthentication();
}
我也尝试过添加:
phpCAS::setServerServiceValidateURL('https://[host]/idp/[context]/serviceValidate/');
这没有任何区别。
我能够在不同的目录中使用完全相同的 CASConfig.php / login 设置。
我还尝试对源进行一些更改(检查 URL 并在不正确时进行替换)但无济于事。