Loading CHANGELOG.md +12 −0 Original line number Diff line number Diff line CHANGELOG ========= 3.2.1 ----- - Modifications/améliorations pour faciliter le support d'autres modes d'authentification (ex: unicaen/auth-token). - Le type d'authentification souhaité (local, shib ou cas) peut être spécifié dans l'URL de redirection via le query param 'authtype' - Ajout de la colonne CREATED_AT dans les scripts SQL de création de la table USER (non mappée dans l'entité). - [FIX] Usurpation d'un compte local (db) depuis une authentification shib - [FIX] Une chaîne vide doit être considérée comme null dans ShibService::extractShibUserIdValueForDomainFromShibData() - [FIX] Nécessité de clés littérales dans la config par domaine de 'shib_user_id_extractor' sinon doublons lors de la fusion des configs 3.2.0 ----- - Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification shibboleth Loading config/module.config.php +27 −11 Original line number Diff line number Diff line <?php namespace UnicaenAuth; use UnicaenAuth\Authentication\Adapter\AdapterChainServiceFactory; use UnicaenAuth\Authentication\Adapter\Cas; use UnicaenAuth\Authentication\Adapter\CasAdapterFactory; Loading @@ -18,6 +20,7 @@ use UnicaenAuth\Authentication\Storage\LdapFactory; use UnicaenAuth\Authentication\Storage\ShibFactory; use UnicaenAuth\Authentication\Storage\Usurpation; use UnicaenAuth\Authentication\Storage\UsurpationFactory; use UnicaenAuth\Controller\AuthController; use UnicaenAuth\Controller\AuthControllerFactory; use UnicaenAuth\Controller\DroitsControllerFactory; use UnicaenAuth\Controller\UtilisateurControllerFactory; Loading @@ -30,12 +33,14 @@ use UnicaenAuth\Form\ShibLoginForm; use UnicaenAuth\Form\ShibLoginFormFactory; use UnicaenAuth\Guard\PrivilegeControllerFactory; use UnicaenAuth\Guard\PrivilegeRouteFactory; use UnicaenAuth\Options\ModuleOptions; use UnicaenAuth\ORM\Event\Listeners\HistoriqueListenerFactory; use UnicaenAuth\Provider\Rule\PrivilegeRuleProviderFactory; use UnicaenAuth\Service\CasService; use UnicaenAuth\Service\CasServiceFactory; use UnicaenAuth\Service\ShibService; use UnicaenAuth\Service\ShibServiceFactory; use UnicaenAuth\Service\UserContext; use UnicaenAuth\Service\UserContextFactory; use UnicaenAuth\Service\UserFactory; use UnicaenAuth\Service\UserMapperFactory; Loading Loading @@ -70,6 +75,15 @@ use Zend\Authentication\AuthenticationService; use Zend\ServiceManager\Proxy\LazyServiceFactory; $settings = [ /** * Tous les types d'authentification supportés par le module unicaen/auth. */ 'auth_types' => [ 'local', // càd 'ldap' et 'db' 'cas', 'shib', ], /** * Configuration de l'authentification centralisée (CAS). */ Loading Loading @@ -197,19 +211,19 @@ $settings = [ /* // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') 'unicaen.fr' => [ [ 'supannRefId' => [ // nom du 1er attribut recherché 'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80' // pattern éventuel pour extraire la partie intéressante 'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234' ], [ 'supannEmpId' => [ // nom du 2e attribut recherché, si le 1er est introuvable 'name' => 'supannEmpId', // pas de pattern donc valeur brute utilisée 'preg_match_pattern' => null, ], [ 'supannEtuId' => [ // nom du 3e attribut recherché, si le 2e est introuvable 'name' => 'supannEtuId', ], Loading @@ -217,10 +231,10 @@ $settings = [ */ // config de repli pour tous les autres domaines 'default' => [ [ 'supannEmpId' => [ 'name' => 'supannEmpId', ], [ 'supannEtuId' => [ 'name' => 'supannEtuId', ], ], Loading Loading @@ -629,21 +643,22 @@ return [ // in /var/www/sygal/module/Application/src/Application/Controller/UtilisateurController.php on line 34 'service_manager' => [ 'aliases' => [ 'unicaen-auth_module_options' => ModuleOptions::class, 'zfcuser_login_form' => LoginForm::class, 'Zend\Authentication\AuthenticationService' => 'zfcuser_auth_service', 'UnicaenAuth\Privilege\PrivilegeProvider' => 'UnicaenAuth\Service\Privilege', '\UnicaenAuth\Guard\PrivilegeController' => 'UnicaenAuth\Guard\PrivilegeController', 'unicaen-auth_user_service' => 'UnicaenAuth\Service\User', // pour la compatibilité 'authUserContext' => 'UnicaenAuth\Service\UserContext', // pour la compatibilité 'AuthUserContext' => 'UnicaenAuth\Service\UserContext', // pour la compatibilité 'authUserContext' => UserContext::class, // pour la compatibilité 'AuthUserContext' => UserContext::class, // pour la compatibilité ], 'invokables' => [ 'UnicaenAuth\View\RedirectionStrategy' => 'UnicaenAuth\View\RedirectionStrategy', 'UnicaenAuth\Service\CategoriePrivilege' => 'UnicaenAuth\Service\CategoriePrivilegeService', ], 'factories' => [ 'unicaen-auth_module_options' => 'UnicaenAuth\Options\ModuleOptionsFactory', ModuleOptions::class => 'UnicaenAuth\Options\ModuleOptionsFactory', 'zfcuser_auth_service' => 'UnicaenAuth\Authentication\AuthenticationServiceFactory', 'UnicaenAuth\Authentication\Storage\Chain' => 'UnicaenAuth\Authentication\Storage\ChainServiceFactory', 'UnicaenAuth\Provider\Identity\Chain' => 'UnicaenAuth\Provider\Identity\ChainServiceFactory', Loading @@ -659,7 +674,7 @@ return [ 'zfcuser_redirect_callback' => 'UnicaenAuth\Authentication\RedirectCallbackFactory', // substituion CasService::class => CasServiceFactory::class, ShibService::class => ShibServiceFactory::class, 'UnicaenAuth\Service\UserContext' => UserContextFactory::class, UserContext::class => UserContextFactory::class, 'zfcuser_user_mapper' => UserMapperFactory::class, 'MouchardCompleterAuth' => 'UnicaenAuth\Mouchard\MouchardCompleterAuthFactory', LocalAdapter::class => LocalAdapterFactory::class, Loading Loading @@ -708,10 +723,11 @@ return [ ], 'controllers' => [ 'invokables' => [ 'aliases' => [ 'UnicaenAuth\Controller\Auth' => AuthController::class, ], 'factories' => [ 'UnicaenAuth\Controller\Auth' => AuthControllerFactory::class, AuthController::class => AuthControllerFactory::class, 'UnicaenAuth\Controller\Utilisateur' => UtilisateurControllerFactory::class, 'UnicaenAuth\Controller\Droits' => DroitsControllerFactory::class, ], Loading config/unicaen-auth.local.php.dist +5 −5 Original line number Diff line number Diff line Loading @@ -124,29 +124,29 @@ return [ 'shib_user_id_extractor' => [ // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') // 'unicaen.fr' => [ // [ // 'supannRefId' => [ // // nom du 1er attribut recherché // 'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80' // // pattern éventuel pour extraire la partie intéressante // 'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234' // ], // [ // 'supannEmpId' => [ // // nom du 2e attribut recherché // 'name' => 'supannEmpId', // // pas de pattern donc valeur brute utilisée // 'preg_match_pattern' => null, // ], // [ // 'supannEtuId' => [ // // nom du 3e attribut recherché // 'name' => 'supannEtuId', // ], // ], // config de repli pour tous les autres domaines 'default' => [ [ 'supannEmpId' => [ 'name' => 'supannEmpId', ], [ 'supannEtuId' => [ 'name' => 'supannEtuId', ], ], Loading data/schema.sqlite.sql +2 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,8 @@ CREATE TABLE IF NOT EXISTS user display_name VARCHAR(64) DEFAULT NULL, password VARCHAR(128) NOT NULL, state SMALLINT default 1, last_role_id INTEGER default null last_role_id INTEGER default null, created_on DATE default current_date not null ); ALTER TABLE user ADD PASSWORD_RESET_TOKEN varchar(256) DEFAULT NULL; CREATE UNIQUE INDEX user_unique_username ON user(username); Loading data/schema_mysql.sql +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ CREATE TABLE user ( password VARCHAR(128) NOT NULL, state SMALLINT default 1, last_role_id INT(11) default null, created_on DATE default now() not null, PRIMARY KEY (id), UNIQUE INDEX unique_username (username ASC) ) ENGINE=InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; Loading Loading
CHANGELOG.md +12 −0 Original line number Diff line number Diff line CHANGELOG ========= 3.2.1 ----- - Modifications/améliorations pour faciliter le support d'autres modes d'authentification (ex: unicaen/auth-token). - Le type d'authentification souhaité (local, shib ou cas) peut être spécifié dans l'URL de redirection via le query param 'authtype' - Ajout de la colonne CREATED_AT dans les scripts SQL de création de la table USER (non mappée dans l'entité). - [FIX] Usurpation d'un compte local (db) depuis une authentification shib - [FIX] Une chaîne vide doit être considérée comme null dans ShibService::extractShibUserIdValueForDomainFromShibData() - [FIX] Nécessité de clés littérales dans la config par domaine de 'shib_user_id_extractor' sinon doublons lors de la fusion des configs 3.2.0 ----- - Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification shibboleth Loading
config/module.config.php +27 −11 Original line number Diff line number Diff line <?php namespace UnicaenAuth; use UnicaenAuth\Authentication\Adapter\AdapterChainServiceFactory; use UnicaenAuth\Authentication\Adapter\Cas; use UnicaenAuth\Authentication\Adapter\CasAdapterFactory; Loading @@ -18,6 +20,7 @@ use UnicaenAuth\Authentication\Storage\LdapFactory; use UnicaenAuth\Authentication\Storage\ShibFactory; use UnicaenAuth\Authentication\Storage\Usurpation; use UnicaenAuth\Authentication\Storage\UsurpationFactory; use UnicaenAuth\Controller\AuthController; use UnicaenAuth\Controller\AuthControllerFactory; use UnicaenAuth\Controller\DroitsControllerFactory; use UnicaenAuth\Controller\UtilisateurControllerFactory; Loading @@ -30,12 +33,14 @@ use UnicaenAuth\Form\ShibLoginForm; use UnicaenAuth\Form\ShibLoginFormFactory; use UnicaenAuth\Guard\PrivilegeControllerFactory; use UnicaenAuth\Guard\PrivilegeRouteFactory; use UnicaenAuth\Options\ModuleOptions; use UnicaenAuth\ORM\Event\Listeners\HistoriqueListenerFactory; use UnicaenAuth\Provider\Rule\PrivilegeRuleProviderFactory; use UnicaenAuth\Service\CasService; use UnicaenAuth\Service\CasServiceFactory; use UnicaenAuth\Service\ShibService; use UnicaenAuth\Service\ShibServiceFactory; use UnicaenAuth\Service\UserContext; use UnicaenAuth\Service\UserContextFactory; use UnicaenAuth\Service\UserFactory; use UnicaenAuth\Service\UserMapperFactory; Loading Loading @@ -70,6 +75,15 @@ use Zend\Authentication\AuthenticationService; use Zend\ServiceManager\Proxy\LazyServiceFactory; $settings = [ /** * Tous les types d'authentification supportés par le module unicaen/auth. */ 'auth_types' => [ 'local', // càd 'ldap' et 'db' 'cas', 'shib', ], /** * Configuration de l'authentification centralisée (CAS). */ Loading Loading @@ -197,19 +211,19 @@ $settings = [ /* // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') 'unicaen.fr' => [ [ 'supannRefId' => [ // nom du 1er attribut recherché 'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80' // pattern éventuel pour extraire la partie intéressante 'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234' ], [ 'supannEmpId' => [ // nom du 2e attribut recherché, si le 1er est introuvable 'name' => 'supannEmpId', // pas de pattern donc valeur brute utilisée 'preg_match_pattern' => null, ], [ 'supannEtuId' => [ // nom du 3e attribut recherché, si le 2e est introuvable 'name' => 'supannEtuId', ], Loading @@ -217,10 +231,10 @@ $settings = [ */ // config de repli pour tous les autres domaines 'default' => [ [ 'supannEmpId' => [ 'name' => 'supannEmpId', ], [ 'supannEtuId' => [ 'name' => 'supannEtuId', ], ], Loading Loading @@ -629,21 +643,22 @@ return [ // in /var/www/sygal/module/Application/src/Application/Controller/UtilisateurController.php on line 34 'service_manager' => [ 'aliases' => [ 'unicaen-auth_module_options' => ModuleOptions::class, 'zfcuser_login_form' => LoginForm::class, 'Zend\Authentication\AuthenticationService' => 'zfcuser_auth_service', 'UnicaenAuth\Privilege\PrivilegeProvider' => 'UnicaenAuth\Service\Privilege', '\UnicaenAuth\Guard\PrivilegeController' => 'UnicaenAuth\Guard\PrivilegeController', 'unicaen-auth_user_service' => 'UnicaenAuth\Service\User', // pour la compatibilité 'authUserContext' => 'UnicaenAuth\Service\UserContext', // pour la compatibilité 'AuthUserContext' => 'UnicaenAuth\Service\UserContext', // pour la compatibilité 'authUserContext' => UserContext::class, // pour la compatibilité 'AuthUserContext' => UserContext::class, // pour la compatibilité ], 'invokables' => [ 'UnicaenAuth\View\RedirectionStrategy' => 'UnicaenAuth\View\RedirectionStrategy', 'UnicaenAuth\Service\CategoriePrivilege' => 'UnicaenAuth\Service\CategoriePrivilegeService', ], 'factories' => [ 'unicaen-auth_module_options' => 'UnicaenAuth\Options\ModuleOptionsFactory', ModuleOptions::class => 'UnicaenAuth\Options\ModuleOptionsFactory', 'zfcuser_auth_service' => 'UnicaenAuth\Authentication\AuthenticationServiceFactory', 'UnicaenAuth\Authentication\Storage\Chain' => 'UnicaenAuth\Authentication\Storage\ChainServiceFactory', 'UnicaenAuth\Provider\Identity\Chain' => 'UnicaenAuth\Provider\Identity\ChainServiceFactory', Loading @@ -659,7 +674,7 @@ return [ 'zfcuser_redirect_callback' => 'UnicaenAuth\Authentication\RedirectCallbackFactory', // substituion CasService::class => CasServiceFactory::class, ShibService::class => ShibServiceFactory::class, 'UnicaenAuth\Service\UserContext' => UserContextFactory::class, UserContext::class => UserContextFactory::class, 'zfcuser_user_mapper' => UserMapperFactory::class, 'MouchardCompleterAuth' => 'UnicaenAuth\Mouchard\MouchardCompleterAuthFactory', LocalAdapter::class => LocalAdapterFactory::class, Loading Loading @@ -708,10 +723,11 @@ return [ ], 'controllers' => [ 'invokables' => [ 'aliases' => [ 'UnicaenAuth\Controller\Auth' => AuthController::class, ], 'factories' => [ 'UnicaenAuth\Controller\Auth' => AuthControllerFactory::class, AuthController::class => AuthControllerFactory::class, 'UnicaenAuth\Controller\Utilisateur' => UtilisateurControllerFactory::class, 'UnicaenAuth\Controller\Droits' => DroitsControllerFactory::class, ], Loading
config/unicaen-auth.local.php.dist +5 −5 Original line number Diff line number Diff line Loading @@ -124,29 +124,29 @@ return [ 'shib_user_id_extractor' => [ // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') // 'unicaen.fr' => [ // [ // 'supannRefId' => [ // // nom du 1er attribut recherché // 'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80' // // pattern éventuel pour extraire la partie intéressante // 'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234' // ], // [ // 'supannEmpId' => [ // // nom du 2e attribut recherché // 'name' => 'supannEmpId', // // pas de pattern donc valeur brute utilisée // 'preg_match_pattern' => null, // ], // [ // 'supannEtuId' => [ // // nom du 3e attribut recherché // 'name' => 'supannEtuId', // ], // ], // config de repli pour tous les autres domaines 'default' => [ [ 'supannEmpId' => [ 'name' => 'supannEmpId', ], [ 'supannEtuId' => [ 'name' => 'supannEtuId', ], ], Loading
data/schema.sqlite.sql +2 −1 Original line number Diff line number Diff line Loading @@ -6,7 +6,8 @@ CREATE TABLE IF NOT EXISTS user display_name VARCHAR(64) DEFAULT NULL, password VARCHAR(128) NOT NULL, state SMALLINT default 1, last_role_id INTEGER default null last_role_id INTEGER default null, created_on DATE default current_date not null ); ALTER TABLE user ADD PASSWORD_RESET_TOKEN varchar(256) DEFAULT NULL; CREATE UNIQUE INDEX user_unique_username ON user(username); Loading
data/schema_mysql.sql +1 −0 Original line number Diff line number Diff line Loading @@ -6,6 +6,7 @@ CREATE TABLE user ( password VARCHAR(128) NOT NULL, state SMALLINT default 1, last_role_id INT(11) default null, created_on DATE default now() not null, PRIMARY KEY (id), UNIQUE INDEX unique_username (username ASC) ) ENGINE=InnoDB DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci; Loading