Quiero crear un módulo de autenticación personalizado para mi instalación de SimpleSamlPHP, pero cada vez que intento probar el módulo, aparece este error:
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)Seguí el tutorial de SimpleSAML hasta el paso cuatro, donde necesito probar el módulo. En mi archivo config.php estoy habilitando el módulo así:
'myauth' => [ 'mymodule:MyAuth' ],Si cambio el nombre del módulo en el archivo de configuración a uno de los módulos preinstalados de SimpleSaml, por ejemplo.
'myauth' => [ 'sqlauth:MyAuth' ],entonces funciona bien. De hecho, si cambio el nombre de la carpeta de mi módulo personalizado para que sea el mismo que uno de los módulos preinstalados y cambio la ruta del espacio de nombres en mi archivo de módulo para reflejar eso, el código de mi módulo funciona bien. Creo que tiene algo que ver con el espacio de nombres en mi archivo de módulo, pero no puedo resolverlo. Estoy usando SimpleSaml versión 1.18.5 y php versión 7.2.24 en Ubuntu 18.04.
Me encontré con este problema yo mismo; Pasé horas en este tema...
Para solucionar su problema; dependiendo de su versión de SimpleSAMLphp (a partir de la última), el archivo 'default_enable' o 'enable' en la raíz de su módulo no funcionará. Debe habilitar su módulo manualmente, agregando lo siguiente al archivo config.php:
<?php $config = [ module.enable = [ 'core' => null, 'saml' => true, 'customAuth' => true, ], ],Esto hará que su módulo customAuth funcione.
Por alguna razón, los módulos autocargados de psr4 funcionan de forma inmediata (los módulos que instala usando Composer, etc.).
Si puede, evite simpleSAMLphp y opte por algo más serio.
Me encontré con esto yo mismo. La documentación no está clara, pero debe agregar un archivo de "habilitación" en la raíz de la carpeta de su módulo como lo sugiere Patrick en los comentarios. Puede ser un archivo completamente vacío solo con el nombre "habilitar" y nada en él. En la línea de comando en un sistema Linux/Unix, puede hacer esto:
touch enable