Loading src/UnicaenAuth/Authentication/Adapter/Ldap.php +33 −11 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface const USURPATION_USERNAMES_SEP = '='; const LDAP_AUTHENTIFICATION_FAIL = 'authentification.ldap.fail'; /** * @var string */ Loading Loading @@ -88,7 +90,8 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface // NB: Dans la version 3.0.0 de zf-commons/zfc-user, cette méthode prend un EventInterface. // Mais dans la branche 3.x, c'est un AdapterChainEvent ! // Si un jour c'est un AdapterChainEvent qui est attendu, plus besoin de faire $e->getTarget(). $event = $e->getTarget(); /* @var $event AdapterChainEvent */ $event = $e->getTarget(); /* @var $event AdapterChainEvent */ if ($this->isSatisfied()) { try { Loading Loading @@ -203,12 +206,29 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface // LDAP auth $result = $this->getLdapAuthAdapter()->setUsername($username)->setPassword($credential)->authenticate(); // Envoi des erreurs LDAP dans un événement if (!$result->isValid()) { $messages = "LDAP ERROR : "; $errorMessages = $result->getMessages(); if (count($errorMessages) > 0) { // On ne prend que les 2 premières lignes d'erreur (les suivantes contiennent souvent // les mots de passe de l'utilisateur, et les mot de passe dans les logs... bof bof). for ($i = 0; $i < 2 && count($errorMessages) >= $i; $i++) { $messages .= $errorMessages[$i] . " "; } } $errorEvent = new Event(self::LDAP_AUTHENTIFICATION_FAIL, null, ['messages' => $messages]); $this->getEventManager()->triggerEvent($errorEvent); } $success = $result->isValid(); // verif existence du login usurpé if ($this->usernameUsurpe) { // s'il nexiste pas, échec de l'authentification if (!@$this->getLdapAuthAdapter()->getLdap()->searchEntries("(".$this->moduleOptions->getLdapUsername()."=$this->usernameUsurpe)")) { if (!@$this->getLdapAuthAdapter()->getLdap()->searchEntries( "(" . $this->moduleOptions->getLdapUsername() . "=$this->usernameUsurpe)" )) { $this->usernameUsurpe = null; $success = false; } Loading Loading @@ -293,10 +313,12 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface */ public function setEventManager(EventManagerInterface $eventManager): self { $eventManager->setIdentifiers([ $eventManager->setIdentifiers( [ __NAMESPACE__, __CLASS__, ]); ] ); $this->eventManager = $eventManager; return $this; Loading Loading
src/UnicaenAuth/Authentication/Adapter/Ldap.php +33 −11 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface const USURPATION_USERNAMES_SEP = '='; const LDAP_AUTHENTIFICATION_FAIL = 'authentification.ldap.fail'; /** * @var string */ Loading Loading @@ -88,7 +90,8 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface // NB: Dans la version 3.0.0 de zf-commons/zfc-user, cette méthode prend un EventInterface. // Mais dans la branche 3.x, c'est un AdapterChainEvent ! // Si un jour c'est un AdapterChainEvent qui est attendu, plus besoin de faire $e->getTarget(). $event = $e->getTarget(); /* @var $event AdapterChainEvent */ $event = $e->getTarget(); /* @var $event AdapterChainEvent */ if ($this->isSatisfied()) { try { Loading Loading @@ -203,12 +206,29 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface // LDAP auth $result = $this->getLdapAuthAdapter()->setUsername($username)->setPassword($credential)->authenticate(); // Envoi des erreurs LDAP dans un événement if (!$result->isValid()) { $messages = "LDAP ERROR : "; $errorMessages = $result->getMessages(); if (count($errorMessages) > 0) { // On ne prend que les 2 premières lignes d'erreur (les suivantes contiennent souvent // les mots de passe de l'utilisateur, et les mot de passe dans les logs... bof bof). for ($i = 0; $i < 2 && count($errorMessages) >= $i; $i++) { $messages .= $errorMessages[$i] . " "; } } $errorEvent = new Event(self::LDAP_AUTHENTIFICATION_FAIL, null, ['messages' => $messages]); $this->getEventManager()->triggerEvent($errorEvent); } $success = $result->isValid(); // verif existence du login usurpé if ($this->usernameUsurpe) { // s'il nexiste pas, échec de l'authentification if (!@$this->getLdapAuthAdapter()->getLdap()->searchEntries("(".$this->moduleOptions->getLdapUsername()."=$this->usernameUsurpe)")) { if (!@$this->getLdapAuthAdapter()->getLdap()->searchEntries( "(" . $this->moduleOptions->getLdapUsername() . "=$this->usernameUsurpe)" )) { $this->usernameUsurpe = null; $success = false; } Loading Loading @@ -293,10 +313,12 @@ class Ldap extends AbstractAdapter implements EventManagerAwareInterface */ public function setEventManager(EventManagerInterface $eventManager): self { $eventManager->setIdentifiers([ $eventManager->setIdentifiers( [ __NAMESPACE__, __CLASS__, ]); ] ); $this->eventManager = $eventManager; return $this; Loading