SimpleSamlPHP未解析自定义身份验证模块



我想为我的SimpleSamlPHP安装创建一个自定义身份验证模块,但每次我尝试测试该模块时都会收到以下错误:

SimpleSAMLErrorError: UNHANDLEDEXCEPTION
Backtrace:
1 www/_include.php:17 (SimpleSAML_exception_handler)
0 [builtin] (N/A)
Caused by: Exception: Could not resolve 'mymodule:MyAuth': no class named 'SimpleSAMLModulemymoduleAuthSourceMyAuth' or 'sspmod_mymodule_Auth_Source_MyAuth'.
Backtrace:
7 lib/SimpleSAML/Module.php:437 (SimpleSAMLModule::resolveClass)
6 lib/SimpleSAML/Auth/Source.php:336 (SimpleSAMLAuthSource::parseAuthSource)
5 lib/SimpleSAML/Auth/Source.php:382 (SimpleSAMLAuthSource::getById)
4 lib/SimpleSAML/Auth/Simple.php:66 (SimpleSAMLAuthSimple::getAuthSource)
3 lib/SimpleSAML/Auth/Simple.php:166 (SimpleSAMLAuthSimple::login)
2 modules/core/www/authenticate.php:38 (require)
1 lib/SimpleSAML/Module.php:254 (SimpleSAMLModule::process)
0 www/module.php:10 (N/A)

我按照SimpleSAML的教程一直到第四步,在那里我需要测试模块。在我的config.php文件中,我启用了如下模块:

'myauth' => [
'mymodule:MyAuth'
],

如果我将配置文件中的模块名称更改为SimpleSaml预装的模块之一,例如

'myauth' => [
'sqlauth:MyAuth'
],

然后它就可以正常工作了。事实上,如果我将自定义模块文件夹的名称更改为与其中一个预装模块相同,并更改模块文件中的命名空间路径以反映这一点,那么我的模块代码就可以正常工作。我相信这与我的模块文件中的名称空间有关,但我无法弄清楚。我在Ubuntu 18.04上使用的是SimpleSaml版本1.18.5和php版本7.2.24。

我自己也遇到过这个问题;我花了几个小时在这个问题上。。。

解决您的问题;根据您的SimpleSAMLphp版本(截至最新版本(,模块根目录中的"default_enable"或"enable"文件将不起作用。您必须手动启用模块,方法是在config.php文件中添加以下内容:

<?php
$config = [
module.enable = [
'core' => null,
'saml' => true,
'customAuth' => true,
],
],

这将使您的customAuth模块正常工作。

出于某种原因,psr4自动加载的模块开箱即用(使用composer等安装的模块(

如果可以的话,请避免使用simpleSAMLphp,转而使用更严肃的方法。

我自己刚刚遇到这个问题。文档不清楚,但您需要添加一个";启用";按照Patrick在评论中的建议,将文件保存在模块文件夹的根目录中。它可以是一个完全空的文件,只具有名称";启用";在Linux/Unix系统的命令行上,你可以这样做:

touch enable

转到config.php文件并启用模块,标记为所述

<?php
$config = [
module.enable = [
'core' => true,
'saml' => true,
'customauth' => true,
'sqlauth' => true,
],
],

只需在mark的回答中添加sqlauth=true即可。我也遇到了同样的问题,我得到了马克答案的帮助,只添加了这一行,我的问题就解决了。谢谢马克。

最新更新