diff --git a/CHANGELOG.md b/CHANGELOG.md index dcc97465c180214f101020b4707bd585aa0d97ec..0b25d3620d5018de3b376878a34da96d50928ae6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,11 @@ CHANGELOG ========= -5.0.0 +5.1.1 +----- +- [FIX] Utilisation à tort de l'option de config 'shib_user_id_extractor' sur des données d'usurpation/simulation. + +5.1.0 = 5.0.0 ----- - Migration vers Bootstrap 5 (front-end). - Infos à propos de la connexion dans le menu principal : simple bouton 'Connexion' si aucun utilisateur connecté ; diff --git a/src/UnicaenAuth/Service/ShibService.php b/src/UnicaenAuth/Service/ShibService.php index 122ef15da65922480687fc9716defdb46547aa93..70af17ed82c9893a20d43a3c002062cdf3eac7b9 100644 --- a/src/UnicaenAuth/Service/ShibService.php +++ b/src/UnicaenAuth/Service/ShibService.php @@ -496,6 +496,15 @@ EOS; */ private function extractShibUserIdValueForDomainFromShibData(string $domain, array $data): ?string { + // En cas d'usurpation, le domaine du compte utilisateur usurpé (ex : 'unicaen.fr') peut différer de celui + // du compte utilisateur usurpateur (ex : 'univ-lehavre.fr'). Or, la config Shibboleth du module exploitée + // ci-dessous n'a de sens que sur des vraies données d'authentification (i.e celle du compte usurpateur), + // donc pas la peine d'aller plus loin : on génère un id bidon. + // En cas de simulation, on invente les données d'authentification donc c'est la même idée. + if ($this->isUsurpationActive() || $this->isSimulationActive()) { + return uniqid(); + } + $config = $this->getShibUserIdExtractorConfigForDomain($domain); if (empty($config)) { $config = $this->getShibUserIdExtractorDefaultConfig();