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

问题描述 投票:0回答:3

我想为我的 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。

apache simplesamlphp
3个回答
7
投票

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

解决您的问题;根据您的 SimpleSAMLphp 版本(最新版本),模块根目录中的“default_enable”或“enable”文件将不起作用。您必须通过将以下内容添加到 config.php 文件来手动启用模块:

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

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

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

如果可以的话,避免使用 simpleSAMLphp 并选择更严肃的东西。


1
投票

我自己也遇到过这个。文档不清楚,但您需要按照 Patrick 在评论中的建议在模块文件夹的根目录中添加一个“启用”文件。它可以是一个完全空的文件,只有名称“enable”,但里面什么也没有。在 Linux/Unix 系统的命令行上,你可以这样做:

touch enable

1
投票

转到您的 config.php 文件并按照 mark 所说启用模块

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

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

© www.soinside.com 2019 - 2024. All rights reserved.