Loading CHANGELOG.md +3 −0 Original line number Diff line number Diff line Loading @@ -45,3 +45,6 @@ Première version officielle sous ZF3. - Possibilité de connaître la source de l'authentification (db, ldap, cas, shib). - Possibilité de stopper l'usurpation en cours pour revenir à l'identité d'origine. - [FIX] Usurpation d'un compte local en BDD. - [FIX] Lorsque l'usurpateur stoppait l'usurpation, il ne récupérait pas son dernier endossé - [FIX] En cas d'usurpation puis de déconnexion puis de reconnexion, on revenait dans la peau de l'usurpé sans pouvoir stopper l'usurpation No newline at end of file config/module.config.php +16 −5 Original line number Diff line number Diff line Loading @@ -194,22 +194,33 @@ $settings = [ * Ex: identifiant de l'usager au sein du référentiel établissement, transmis par l'IDP via le supannRefId. */ 'shib_user_id_extractor' => [ /* // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') 'unicaen.fr' => [ [ // nom du 1er attribut recherché 'name' => 'supannRefId', // ex: '{REFERENTIEL}1234;{ISO15693}044D1AZE7A5P80' 'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80' // pattern éventuel pour extraire la partie intéressante 'preg_match_pattern' => '|\{REFERENTIEL\}(\d+)|', // ex: permet d'extraire '1234' 'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234' ], [ // nom du 2e attribut recherché // nom du 2e attribut recherché, si le 1er est introuvable 'name' => 'supannEmpId', // pas de pattern donc valeur directement utilisable // pas de pattern donc valeur brute utilisée 'preg_match_pattern' => null, ], [ // nom du 3e attribut recherché // nom du 3e attribut recherché, si le 2e est introuvable 'name' => 'supannEtuId', ], ], */ // config de repli pour tous les autres domaines 'default' => [ [ 'name' => 'supannEmpId', ], [ 'name' => 'supannEtuId', ], ], Loading config/unicaen-auth.local.php.dist +20 −11 Original line number Diff line number Diff line Loading @@ -123,21 +123,30 @@ return [ */ 'shib_user_id_extractor' => [ // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') 'unicaen.fr' => [ [ // nom du 1er attribut recherché 'name' => 'supannRefId', // ex: '{REFERENTIEL}1234;{ISO15693}044D1AZE7A5P80' // pattern éventuel pour extraire la partie intéressante 'preg_match_pattern' => '|\{REFERENTIEL\}(\d+)|', // ex: permet d'extraire '1234' ], // 'unicaen.fr' => [ // [ // // 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' // ], // [ // // nom du 2e attribut recherché // 'name' => 'supannEmpId', // // pas de pattern donc valeur brute utilisée // 'preg_match_pattern' => null, // ], // [ // // nom du 3e attribut recherché // 'name' => 'supannEtuId', // ], // ], // config de repli pour tous les autres domaines 'default' => [ [ // nom du 2e attribut recherché 'name' => 'supannEmpId', // pas de pattern donc valeur directement utilisable 'preg_match_pattern' => null, ], [ // nom du 3e attribut recherché 'name' => 'supannEtuId', ], ], Loading src/UnicaenAuth/Authentication/Adapter/LocalAdapterFactory.php +5 −4 Original line number Diff line number Diff line Loading @@ -28,11 +28,11 @@ class LocalAdapterFactory // db adapter if (array_key_exists('db', $localConfig)) { $this->attachSubAdapter($localAdapter, $container, $localConfig['db']); $this->attachSubAdapter($localAdapter, $container, $localConfig['db'], 20); // en 1er } // ldap adapter if (array_key_exists('ldap', $localConfig)) { $this->attachSubAdapter($localAdapter, $container, $localConfig['ldap']); $this->attachSubAdapter($localAdapter, $container, $localConfig['ldap'], 10); // en 2e } return $localAdapter; Loading @@ -42,8 +42,9 @@ class LocalAdapterFactory * @param LocalAdapter $localAdapter * @param ContainerInterface $container * @param array $config * @param int $priority */ private function attachSubAdapter(LocalAdapter $localAdapter, ContainerInterface $container, array $config) private function attachSubAdapter(LocalAdapter $localAdapter, ContainerInterface $container, array $config, int $priority) { $enabled = isset($config['enabled']) && $config['enabled'] === true; if (! $enabled) { Loading @@ -52,7 +53,7 @@ class LocalAdapterFactory /** @var AbstractAdapter $subAdapter */ $subAdapter = $container->get($config['adapter']); $subAdapter->attach($localAdapter->getEventManager()); $subAdapter->attach($localAdapter->getEventManager(), $priority); } } No newline at end of file src/UnicaenAuth/Authentication/Storage/Shib.php +10 −0 Original line number Diff line number Diff line Loading @@ -54,4 +54,14 @@ class Shib extends AbstractStorage return $this->shibService->getAuthenticatedUser(); } /** * @inheritDoc */ public function clear(ChainEvent $e) { parent::clear($e); $this->shibService->deactivateUsurpation(); } } Loading
CHANGELOG.md +3 −0 Original line number Diff line number Diff line Loading @@ -45,3 +45,6 @@ Première version officielle sous ZF3. - Possibilité de connaître la source de l'authentification (db, ldap, cas, shib). - Possibilité de stopper l'usurpation en cours pour revenir à l'identité d'origine. - [FIX] Usurpation d'un compte local en BDD. - [FIX] Lorsque l'usurpateur stoppait l'usurpation, il ne récupérait pas son dernier endossé - [FIX] En cas d'usurpation puis de déconnexion puis de reconnexion, on revenait dans la peau de l'usurpé sans pouvoir stopper l'usurpation No newline at end of file
config/module.config.php +16 −5 Original line number Diff line number Diff line Loading @@ -194,22 +194,33 @@ $settings = [ * Ex: identifiant de l'usager au sein du référentiel établissement, transmis par l'IDP via le supannRefId. */ 'shib_user_id_extractor' => [ /* // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') 'unicaen.fr' => [ [ // nom du 1er attribut recherché 'name' => 'supannRefId', // ex: '{REFERENTIEL}1234;{ISO15693}044D1AZE7A5P80' 'name' => 'supannRefId', // ex: '{OCTOPUS:ID}1234;{ISO15693}044D1AZE7A5P80' // pattern éventuel pour extraire la partie intéressante 'preg_match_pattern' => '|\{REFERENTIEL\}(\d+)|', // ex: permet d'extraire '1234' 'preg_match_pattern' => '|\{OCTOPUS:ID\}(\d+)|', // ex: permet d'extraire '1234' ], [ // nom du 2e attribut recherché // nom du 2e attribut recherché, si le 1er est introuvable 'name' => 'supannEmpId', // pas de pattern donc valeur directement utilisable // pas de pattern donc valeur brute utilisée 'preg_match_pattern' => null, ], [ // nom du 3e attribut recherché // nom du 3e attribut recherché, si le 2e est introuvable 'name' => 'supannEtuId', ], ], */ // config de repli pour tous les autres domaines 'default' => [ [ 'name' => 'supannEmpId', ], [ 'name' => 'supannEtuId', ], ], Loading
config/unicaen-auth.local.php.dist +20 −11 Original line number Diff line number Diff line Loading @@ -123,21 +123,30 @@ return [ */ 'shib_user_id_extractor' => [ // domaine (ex: 'unicaen.fr') de l'EPPN (ex: hochonp@unicaen.fr') 'unicaen.fr' => [ [ // nom du 1er attribut recherché 'name' => 'supannRefId', // ex: '{REFERENTIEL}1234;{ISO15693}044D1AZE7A5P80' // pattern éventuel pour extraire la partie intéressante 'preg_match_pattern' => '|\{REFERENTIEL\}(\d+)|', // ex: permet d'extraire '1234' ], // 'unicaen.fr' => [ // [ // // 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' // ], // [ // // nom du 2e attribut recherché // 'name' => 'supannEmpId', // // pas de pattern donc valeur brute utilisée // 'preg_match_pattern' => null, // ], // [ // // nom du 3e attribut recherché // 'name' => 'supannEtuId', // ], // ], // config de repli pour tous les autres domaines 'default' => [ [ // nom du 2e attribut recherché 'name' => 'supannEmpId', // pas de pattern donc valeur directement utilisable 'preg_match_pattern' => null, ], [ // nom du 3e attribut recherché 'name' => 'supannEtuId', ], ], Loading
src/UnicaenAuth/Authentication/Adapter/LocalAdapterFactory.php +5 −4 Original line number Diff line number Diff line Loading @@ -28,11 +28,11 @@ class LocalAdapterFactory // db adapter if (array_key_exists('db', $localConfig)) { $this->attachSubAdapter($localAdapter, $container, $localConfig['db']); $this->attachSubAdapter($localAdapter, $container, $localConfig['db'], 20); // en 1er } // ldap adapter if (array_key_exists('ldap', $localConfig)) { $this->attachSubAdapter($localAdapter, $container, $localConfig['ldap']); $this->attachSubAdapter($localAdapter, $container, $localConfig['ldap'], 10); // en 2e } return $localAdapter; Loading @@ -42,8 +42,9 @@ class LocalAdapterFactory * @param LocalAdapter $localAdapter * @param ContainerInterface $container * @param array $config * @param int $priority */ private function attachSubAdapter(LocalAdapter $localAdapter, ContainerInterface $container, array $config) private function attachSubAdapter(LocalAdapter $localAdapter, ContainerInterface $container, array $config, int $priority) { $enabled = isset($config['enabled']) && $config['enabled'] === true; if (! $enabled) { Loading @@ -52,7 +53,7 @@ class LocalAdapterFactory /** @var AbstractAdapter $subAdapter */ $subAdapter = $container->get($config['adapter']); $subAdapter->attach($localAdapter->getEventManager()); $subAdapter->attach($localAdapter->getEventManager(), $priority); } } No newline at end of file
src/UnicaenAuth/Authentication/Storage/Shib.php +10 −0 Original line number Diff line number Diff line Loading @@ -54,4 +54,14 @@ class Shib extends AbstractStorage return $this->shibService->getAuthenticatedUser(); } /** * @inheritDoc */ public function clear(ChainEvent $e) { parent::clear($e); $this->shibService->deactivateUsurpation(); } }