diff --git a/config/module.config.php b/config/module.config.php
index 6df519b0e13fc2b6d30ff31fa3b10f105c45944b..cb7bec104386b8f2768df286d4bbaa8a8598d091 100644
--- a/config/module.config.php
+++ b/config/module.config.php
@@ -1,6 +1,12 @@
 <?php
 $settings = array(
-    
+    /**
+     * Fournisseurs d'identité.
+     */
+    'identity_providers' => array(
+        200 => 'UnicaenAuth\Provider\Identity\Db',
+        100 => 'UnicaenAuth\Provider\Identity\Ldap',
+    ),
 );
 
 $zfcuserSettings = array(
diff --git a/src/UnicaenAuth/Provider/Identity/Chain.php b/src/UnicaenAuth/Provider/Identity/Chain.php
index 074291d2b0dce5098320f73a14ed5f5918160f73..1ce6fe35e893415ceef61844ab55a3e9019ff52a 100644
--- a/src/UnicaenAuth/Provider/Identity/Chain.php
+++ b/src/UnicaenAuth/Provider/Identity/Chain.php
@@ -2,12 +2,11 @@
 namespace UnicaenAuth\Provider\Identity;
 
 use BjyAuthorize\Provider\Identity\ProviderInterface;
-use Zend\EventManager\EventManager;
 use Zend\EventManager\EventManagerAwareInterface;
-use Zend\EventManager\EventManagerInterface;
+use Zend\EventManager\EventManagerAwareTrait;
 use Zend\Permissions\Acl\Role\RoleInterface;
 use Zend\ServiceManager\ServiceLocatorAwareInterface;
-use Zend\ServiceManager\ServiceLocatorInterface;
+use Zend\ServiceManager\ServiceLocatorAwareTrait;
 
 /**
  * Chaîne de responsabilité permettant à plusieures sources de fournir
@@ -19,15 +18,8 @@ use Zend\ServiceManager\ServiceLocatorInterface;
  */
 class Chain implements ProviderInterface, ServiceLocatorAwareInterface, EventManagerAwareInterface
 {
-    /**
-     * @var ServiceLocatorAwareInterface
-     */
-    protected $serviceLocator;
- 
-    /**
-     * @var EventManagerInterface 
-     */
-    protected $eventManager;
+    use ServiceLocatorAwareTrait;
+    use EventManagerAwareTrait;
     
     /**
      * @var ChainEvent
@@ -82,57 +74,6 @@ class Chain implements ProviderInterface, ServiceLocatorAwareInterface, EventMan
         return $this->roles;
     }
     
-    /**
-     * Inject an EventManager instance
-     *
-     * @param  EventManagerInterface $eventManager
-     * @return self
-     */
-    public function setEventManager(EventManagerInterface $eventManager)
-    {
-        $eventManager->setIdentifiers(array(
-            __CLASS__,
-            get_called_class(),
-        ));
-        $this->eventManager = $eventManager;
-        return $this;
-    }
-    
-    /**
-     * Get the EventManager instance
-     * 
-     * @return EventManagerInterface
-     */
-    public function getEventManager()
-    {
-        if (null === $this->eventManager) {
-            $this->setEventManager(new EventManager());
-        }
-        return $this->eventManager;
-    }
-    
-    /**
-     * Set service locator
-     *
-     * @param ServiceLocatorInterface $serviceLocator
-     * @return self
-     */
-    public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
-    {
-        $this->serviceLocator = $serviceLocator;
-        return $this;
-    }
-
-    /**
-     * Get service locator
-     *
-     * @return ServiceLocatorInterface
-     */
-    public function getServiceLocator()
-    {
-        return $this->serviceLocator;
-    }
-    
     /**
      * 
      * @return ChainEvent
diff --git a/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php b/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php
index 6f5ba726303037a622d3ee90eb9c6a5d733718d5..01a5f8f92fc98521eb2274c78dd2fafeebe0e061 100644
--- a/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php
+++ b/src/UnicaenAuth/Provider/Identity/ChainServiceFactory.php
@@ -5,7 +5,7 @@ use Zend\ServiceManager\FactoryInterface;
 use Zend\ServiceManager\ServiceLocatorInterface;
 
 /**
- * Description of CcainIdentityProviderServiceFactory
+ * Intsancie une chaîne de fournisseurs d'identité.
  *
  * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
  */
@@ -19,17 +19,19 @@ class ChainServiceFactory implements FactoryInterface
      */
     public function createService(ServiceLocatorInterface $serviceLocator)
     {
-        $providers = array(
-            200 => 'UnicaenAuth\Provider\Identity\Db',
-            100 => 'UnicaenAuth\Provider\Identity\Ldap',
-        );
+        $config = $serviceLocator->get('Config'); //'unicaen-auth_module_options'
+        if (!isset($config['unicaen-auth']['identity_providers']) || !$config['unicaen-auth']['identity_providers']) {
+            throw new \UnicaenApp\Exception\RuntimeException("Aucun fournisseur d'identité spécifié dans la config.");
+        }
+        
+        $providers = (array) $config['unicaen-auth']['identity_providers'];
         
         $chain = new Chain();
         $chain->setServiceLocator($serviceLocator);
         
         foreach ($providers as $priority => $name) {
             $provider = $serviceLocator->get($name);
-            $chain->getEventManager()->attach('getIdentityRoles', array($provider, 'getIdentityRolesTrigger'), $priority);
+            $chain->getEventManager()->attach('getIdentityRoles', array($provider, 'injectIdentityRoles'), $priority);
         }
         
         return $chain;
diff --git a/src/UnicaenAuth/Provider/Identity/ChainableProvider.php b/src/UnicaenAuth/Provider/Identity/ChainableProvider.php
index 30d4f3417f782a1c21db1cf7845776758de7e3c2..3a101e231a5a2d3241b3af27b3838edeaf2f5974 100644
--- a/src/UnicaenAuth/Provider/Identity/ChainableProvider.php
+++ b/src/UnicaenAuth/Provider/Identity/ChainableProvider.php
@@ -5,9 +5,9 @@ namespace UnicaenAuth\Provider\Identity;
 interface ChainableProvider
 {
     /**
-     * Retrieve roles for the current identity
+     * Injecte les rôles que possède l'identité authentifiée courante.
      *
-     * @param ChainEvent $event
+     * @param ChainEvent $e
      */
-    public function getIdentityRolesTrigger(ChainEvent $e);
+    public function injectIdentityRoles(ChainEvent $e);
 }
\ No newline at end of file
diff --git a/src/UnicaenAuth/Provider/Identity/Db.php b/src/UnicaenAuth/Provider/Identity/Db.php
index ea5747e00f2fe549d574f5fd89d9c1b186d26050..35df9cfc10778758ed659bd23996321eb24789a0 100644
--- a/src/UnicaenAuth/Provider/Identity/Db.php
+++ b/src/UnicaenAuth/Provider/Identity/Db.php
@@ -21,7 +21,7 @@ class Db extends AuthenticationIdentityProvider implements ChainableProvider
     /**
      * {@inheritDoc}
      */
-    public function getIdentityRolesTrigger(ChainEvent $event)
+    public function injectIdentityRoles(ChainEvent $event)
     {
         $event->addRoles($this->getIdentityRoles());
     }
diff --git a/src/UnicaenAuth/Provider/Identity/Ldap.php b/src/UnicaenAuth/Provider/Identity/Ldap.php
index 647b841e6192dbf07f258e5e77789704c635c121..e28ab2d2f07bb6c02663403b442b447c2b323390 100644
--- a/src/UnicaenAuth/Provider/Identity/Ldap.php
+++ b/src/UnicaenAuth/Provider/Identity/Ldap.php
@@ -1,7 +1,6 @@
 <?php
 namespace UnicaenAuth\Provider\Identity;
 
-use UnicaenAuth\Entity\Ldap\People;
 use BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider;
 use BjyAuthorize\Provider\Role\ProviderInterface;
 use ZfcUser\Entity\UserInterface;
@@ -16,12 +15,12 @@ use ZfcUser\Entity\UserInterface;
  *
  * @author Bertrand GAUTHIER <bertrand.gauthier at unicaen.fr>
  */
-class Ldap extends AuthenticationIdentityProvider implements ChainableProvider//, ServiceLocatorAwareInterface
+class Ldap extends AuthenticationIdentityProvider implements ChainableProvider
 {
     /**
      * {@inheritDoc}
      */
-    public function getIdentityRolesTrigger(ChainEvent $event)
+    public function injectIdentityRoles(ChainEvent $event)
     {
         $event->addRoles($this->getIdentityRoles());
     }