Loading CHANGELOG.md +2 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ Première version officielle sous ZF3. 3.2.0 ----- - Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification shibboleth (config 'shib_user_id_extractor'). - 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. config/module.config.php +38 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,44 @@ $settings = [ 'supannEtuId|supannEmpId', ], */ /** * Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification * shibboleth. * 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: '{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é, si le 1er est introuvable 'name' => 'supannEmpId', // pas de pattern donc valeur brute utilisée 'preg_match_pattern' => null, ], [ // 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 +36 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,42 @@ return [ // 'givenName', // 'supannEtuId|supannEmpId', //], /** * Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification * shibboleth. * 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: '{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' => [ [ 'name' => 'supannEmpId', ], [ '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/Entity/Shibboleth/ShibUser.php +12 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,18 @@ class ShibUser implements UserInterface */ protected $state = 1; /** * Retourne la partie domaine DNS de l'EPPN. * Retourne par exemple "unicaen.fr" lorsque l'EPPN est "tartempion@unicaen.fr" * * @return string */ public function getEppnDomain() { $parts = explode('@', $this->getEppn()); return $parts[1]; } /** * @return string Loading Loading
CHANGELOG.md +2 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,8 @@ Première version officielle sous ZF3. 3.2.0 ----- - Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification shibboleth (config 'shib_user_id_extractor'). - 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.
config/module.config.php +38 −0 Original line number Diff line number Diff line Loading @@ -187,6 +187,44 @@ $settings = [ 'supannEtuId|supannEmpId', ], */ /** * Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification * shibboleth. * 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: '{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é, si le 1er est introuvable 'name' => 'supannEmpId', // pas de pattern donc valeur brute utilisée 'preg_match_pattern' => null, ], [ // 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 +36 −0 Original line number Diff line number Diff line Loading @@ -115,6 +115,42 @@ return [ // 'givenName', // 'supannEtuId|supannEmpId', //], /** * Configuration de la stratégie d'extraction d'un identifiant utile parmi les données d'authentification * shibboleth. * 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: '{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' => [ [ 'name' => 'supannEmpId', ], [ '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/Entity/Shibboleth/ShibUser.php +12 −0 Original line number Diff line number Diff line Loading @@ -47,6 +47,18 @@ class ShibUser implements UserInterface */ protected $state = 1; /** * Retourne la partie domaine DNS de l'EPPN. * Retourne par exemple "unicaen.fr" lorsque l'EPPN est "tartempion@unicaen.fr" * * @return string */ public function getEppnDomain() { $parts = explode('@', $this->getEppn()); return $parts[1]; } /** * @return string Loading