SimpleSamlPHP 未解析自定义身份验证模块
SimpleSamlPHP not resolving custom authentication module
我想为我的 SimpleSamlPHP 安装创建自定义身份验证模块,但每次我尝试测试该模块时都会收到此错误:
SimpleSAML\Error\Error: 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 'SimpleSAML\Module\mymodule\Auth\Source\MyAuth' or 'sspmod_mymodule_Auth_Source_MyAuth'.
Backtrace:
7 lib/SimpleSAML/Module.php:437 (SimpleSAML\Module::resolveClass)
6 lib/SimpleSAML/Auth/Source.php:336 (SimpleSAML\Auth\Source::parseAuthSource)
5 lib/SimpleSAML/Auth/Source.php:382 (SimpleSAML\Auth\Source::getById)
4 lib/SimpleSAML/Auth/Simple.php:66 (SimpleSAML\Auth\Simple::getAuthSource)
3 lib/SimpleSAML/Auth/Simple.php:166 (SimpleSAML\Auth\Simple::login)
2 modules/core/www/authenticate.php:38 (require)
1 lib/SimpleSAML/Module.php:254 (SimpleSAML\Module::process)
0 www/module.php:10 (N/A)
我已经按照 SimpleSAML 的 tutorial 进行了第四步,我需要在其中测试模块。在我的 config.php 文件中,我启用了这样的模块:
'myauth' => [
'mymodule:MyAuth'
],
如果我将配置文件中的模块名称更改为 SimpleSaml 的预安装模块之一,例如
'myauth' => [
'sqlauth:MyAuth'
],
然后它就可以正常工作了。事实上,如果我将我的自定义模块文件夹的名称更改为与预安装模块之一相同,并更改我的模块文件中的名称空间路径以反映这一点,我的模块代码就可以正常工作。我相信它与我的模块文件中的命名空间有关,但我无法弄清楚。我在 Ubuntu 18.04.
上使用 SimpleSaml 版本 1.18.5 和 php 版本 7.2.24
只是 运行 我自己。文档不清楚,但您需要按照 Patrick 在评论中的建议在模块文件夹的根目录下添加一个“启用”文件。它可以是一个完全空的文件,只有名称“enable”,里面什么也没有。在 Linux/Unix 系统的命令行中,您可以这样做:
touch enable
我自己也遇到过这个问题;我在这个问题上花了几个小时...
解决您的问题;根据您的 SimpleSAMLphp 版本(最新版本),模块根目录中的 'default_enable' 或 'enable' 文件将不起作用。您必须通过将以下内容添加到 config.php 文件来手动启用您的模块:
<?php
$config = [
module.enable = [
'core' => null,
'saml' => true,
'customAuth' => true,
],
],
这将使您的 customAuth 模块正常工作。
出于某种原因,psr4 自动加载模块可以工作 out-of-the-box(您使用 composer 等安装的模块)。
如果可以,请避免使用 simpleSAMLphp 并尝试更严肃的东西。
转到您的 config.php 文件并启用模块,如 所述
<?php
$config = [
module.enable = [
'core' => true,
'saml' => true,
'customauth' => true,
'sqlauth' => true,
],
],
只需在 的回答中添加 sqlauth= true 即可。我有同样的问题,我从马克的回答中得到了帮助,只是添加了这一行,我的问题就解决了。谢谢马克。
我想为我的 SimpleSamlPHP 安装创建自定义身份验证模块,但每次我尝试测试该模块时都会收到此错误:
SimpleSAML\Error\Error: 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 'SimpleSAML\Module\mymodule\Auth\Source\MyAuth' or 'sspmod_mymodule_Auth_Source_MyAuth'.
Backtrace:
7 lib/SimpleSAML/Module.php:437 (SimpleSAML\Module::resolveClass)
6 lib/SimpleSAML/Auth/Source.php:336 (SimpleSAML\Auth\Source::parseAuthSource)
5 lib/SimpleSAML/Auth/Source.php:382 (SimpleSAML\Auth\Source::getById)
4 lib/SimpleSAML/Auth/Simple.php:66 (SimpleSAML\Auth\Simple::getAuthSource)
3 lib/SimpleSAML/Auth/Simple.php:166 (SimpleSAML\Auth\Simple::login)
2 modules/core/www/authenticate.php:38 (require)
1 lib/SimpleSAML/Module.php:254 (SimpleSAML\Module::process)
0 www/module.php:10 (N/A)
我已经按照 SimpleSAML 的 tutorial 进行了第四步,我需要在其中测试模块。在我的 config.php 文件中,我启用了这样的模块:
'myauth' => [
'mymodule:MyAuth'
],
如果我将配置文件中的模块名称更改为 SimpleSaml 的预安装模块之一,例如
'myauth' => [
'sqlauth:MyAuth'
],
然后它就可以正常工作了。事实上,如果我将我的自定义模块文件夹的名称更改为与预安装模块之一相同,并更改我的模块文件中的名称空间路径以反映这一点,我的模块代码就可以正常工作。我相信它与我的模块文件中的命名空间有关,但我无法弄清楚。我在 Ubuntu 18.04.
上使用 SimpleSaml 版本 1.18.5 和 php 版本 7.2.24只是 运行 我自己。文档不清楚,但您需要按照 Patrick 在评论中的建议在模块文件夹的根目录下添加一个“启用”文件。它可以是一个完全空的文件,只有名称“enable”,里面什么也没有。在 Linux/Unix 系统的命令行中,您可以这样做:
touch enable
我自己也遇到过这个问题;我在这个问题上花了几个小时...
解决您的问题;根据您的 SimpleSAMLphp 版本(最新版本),模块根目录中的 'default_enable' 或 'enable' 文件将不起作用。您必须通过将以下内容添加到 config.php 文件来手动启用您的模块:
<?php
$config = [
module.enable = [
'core' => null,
'saml' => true,
'customAuth' => true,
],
],
这将使您的 customAuth 模块正常工作。
出于某种原因,psr4 自动加载模块可以工作 out-of-the-box(您使用 composer 等安装的模块)。
如果可以,请避免使用 simpleSAMLphp 并尝试更严肃的东西。
转到您的 config.php 文件并启用模块,如
<?php
$config = [
module.enable = [
'core' => true,
'saml' => true,
'customauth' => true,
'sqlauth' => true,
],
],
只需在