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();