我正在为我的申请使用subfission/cas。我已经关注了所有installation steps。我正在使用Windows,如果那很重要的话。更准确地说,我已经配置了以下内容:
我在终端中运行了以下内容
composer require "subfission/cas" "dev-master"
我相应地配置了Kernel.php,并添加了以下内容:
'cas.auth' => 'Subfission\Cas\Middleware\CASAuth',
'cas.guest' => 'Subfission\Cas\Middleware\RedirectCASAuthenticated',
我运行了以下命令:
php artisan vendor:publish
我还在cas.php配置文件中设置了cas服务器:
'cas_hostname' => env('CAS_HOSTNAME', 'cas.myserver.me'),
'cas_real_hosts' => env('CAS_REAL_HOSTS', 'cas.myserver.me'),
我想要的是所有路由的中间件,因此我在路由中添加了以下路由规则:
Route::middleware(['cas.auth'])->group(function ()
{
Route::get('/', function ()
{
return view('welcome');
});
});
基本上,我想在访问主页时将所有未登录的用户重定向到登录页面(目前,将来我将添加更多路由)。发生的情况是,当用户未登录时,他们被重定向到登录页面,但是登录后,我收到以下错误:
ErrorException(E_WARNING) DOMDocument :: loadXML():开头和结尾标签不匹配:第1行和Entity中的正文,第1行:
无论我要将用户重定向到哪个视图。我尝试了默认的欢迎页面以及空白视图,但仍然遇到相同的错误。
编辑:我已经使用subfission / cas的dev-master分支来解决上述错误,切换到2.1.1后,我得到了另一个错误:
session_name():标头已发送时无法更改会话名称
编辑2:我做了更多的挖掘工作,并使用以下命令在cas客户端类中启用了内部错误:
libxml_use_internal_errors(true);
现在我得到以下信息:
Authentication failure: SA not validated Reason: bad response from the CAS server
答案 0 :(得分:2)
我知道已经有一段时间了,但是对于其他遇到这种问题的人来说,问题是网络服务与CAS(中央身份验证服务)提供程序进行通信所选择的协议。此软件包中用于SSO / CAS的主要协议有两种:
[令人困惑的是,CAS协议与服务共享相同的名称空间。]
该想法是使协议和版本与您的身份提供者匹配。听起来您的提供者正在使用CASv3.0,这就是禁用SAML起作用的原因。
此外,如果启用调试模式,您将在日志文件中看到更多错误详细信息,以帮助您进行故障排除。
祝你好运!
答案 1 :(得分:0)
我设法通过在cas配置文件中禁用SAML来解决了这个问题:
'cas_enable_saml' => env('CAS_ENABLE_SAML', true), -> cas_enable_saml' => env('CAS_ENABLE_SAML', false),