Plugin LoginLdap Piwik 2.0

De EjnTricks

Le plugin LoginLdap permet d'authentifier les utilisateurs sur un annuaire LDAP et non plus depuis leur déclaration dans l'application.

Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


System-Install-icon.png Installation

Dans le cadre de cette instance, les extensions sont externalisées comme expliqué dans l'article des extensions.


L'extension est installée dans son propre sous répertoire /var/opt/piwik/common/plugins-available/LoginLdap.

#sudo mkdir -p /var/opt/piwik/common/plugins-available/LoginLdap
#sudo chown www-data:www-data /var/opt/piwik/common/plugins-available/LoginLdap
#sudo chmod 750 /var/opt/piwik/common/plugins-available/LoginLdap

La version est téléchargée dans le répertoire /var/opt/piwik/common/plugins-available/LoginLdap du serveur.

#sudo wget -O /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1.zip http://plugins.piwik.org/api/2.0/plugins/LoginLdap/download/3.2.1

Puis l'extension est installée en décompressant l'archive.

#sudo unzip /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1.zip -d /var/opt/piwik/common/plugins-available/LoginLdap/
#sudo mv /var/opt/piwik/common/plugins-available/LoginLdap/LoginLdap /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1
#sudo rm /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1.zip

Les droits mis en place sont les mêmes que ceux de l'application, à savoir pour le compte www-data.

#sudo find /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1/ -type f -exec chmod 0640 {} \;
#sudo find /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1/ -type f -exec chown www-data:www-data {} \;
#sudo find /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1/ -type d -exec chmod 0750 {} \;
#sudo find /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1/ -type d -exec chown www-data:www-data {} \;
#sudo chmod 750 /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1
#sudo chown www-data:www-data /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1

L'activation de cette version est réalisée en plaçant un lien LoginLdap dans le répertoire /var/opt/piwik/common/plugins-enabled

#sudo ln -s /var/opt/piwik/common/plugins-available/LoginLdap/3.2.1 /var/opt/piwik/common/plugins-enabled/LoginLdap
#sudo chown -h www-data:www-data /var/opt/piwik/common/plugins-enabled/LoginLdap

Puis il faut référencer le plugin en plaçant un lien dans le répertoire de plugin.

#sudo ln -s /var/opt/piwik/common/plugins-enabled/LoginLdap /var/opt/piwik/piwik/plugins/LoginLdap
#sudo chown -h www-data:www-data /var/opt/piwik/piwik/plugins/LoginLdap

Enfin, il faut aller dans l'interface d'administration, le plugin LoginLdap doit être présenté.


En cliquant sur le lien Activer, celui-ci devient disponible si un message de confirmation est affiché.


Process-Icon.png Utilisation

Le paramétrage du plugin s'effectue dans le nouvel onglet Paramètres → LDAP dans la page d'administration.

Warning-icon.png Compte administrateur

Par mesure de sécurité, il est recommandé de créer un compte administrateur temporaire, si tous les comptes doivent basculer sur l'authentification LDAP. Pour cette mise en place, une seul compte était disponible. En cas d'échec, il aurait pu être compliqué de retourner sur la page d'administration. Donc un compte admin a été ajouté en assurant le mot de passe, en cas de reprise, pour désactiver le plugin par exemple.

Finalement, cela n'a pas été nécessaire, mais cela a permit d'effectuer les configurations sereinement.

Warning-icon.png Refresh navigateur

Attention, le plugin peut ne pas fonctionner lors du premier affichage. L'erreur s'est produite sur Chrome. En affichant les outils de développement, le message suivant a été observé.

Error: [ng:areq] http://errors.angularjs.org/1.2.28/ng/areq?p0=LoginLdapAdminController&p1=not%20a%20function%2C%20got%20undefined
    at Error (native)
    at .../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:118:450
    at Db (.../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:131:106)
    at Ya (.../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:131:193)
    at .../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:179:405
    at .../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:166:25
    at r (.../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:119:392)
    at J (.../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:165:396)
    at g (.../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:159:256)
    at g (.../index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:159:273)(anonymous function)
    @ index.php?module=Proxy&action=getCoreJs&cb=19ae1037bf784de630222d6084afe79b:204

Il faut s'assurer d'avoir fait un refresh du cache du navigateur, touches <Ctrl> + <F5>.

Icon-Configuration-Settings.png Paramètres

La première partie de la page de configuration concerne les paramètres globaux du plugin. Dans le cadre de cette installation, les valeurs par défaut sont conservées, sauf pour la restriction sur le groupe d'appartenance dans l'annuaire.

Paramètre Valeur
Toujours utiliser LDAP pour l'authentification Cochée

Ainsi l'authentification est systématiquement validée sur l'annuaire LDAP, et n'utilise plus la base interne des comptes.

Synchroniser l'utilisateur après une authentification réussie Suite à une authentification, les informations de l'utilisateur, en fonction du mapping mis en place, sont répercuté depuis l'annuaire vers la déclaration dans Piwik.

Cela est utile pour des utilisateurs se connectant la première fois.

Utiliser Auth. Server Web Non utilisé dans le cadre de cette installation.
Champ LDAP memberOf Nom du champ LDAP, sur les comptes utilisateur, pour identifier les groupe auquel appartiennent les comptes.

Pour un annuaire OpenLDAP, la valeur memberOf est valide, à condition d'avoir installé l' overlay memberOf.

Groupe utilisateur requis Par défaut vide. Permet de spécifier un groupe d'appartenance requis pour les comptes. Ce qui permet d'éviter de synchroniser tout l'annuaire.

Dans le cadre de cette installation, seuls les comptes appartenant au groupe cn=piwikUsers,ou=groups,dc=ejnserver,dc=fr seront autorisés. Une fois la valeur saisie, il est possible d'effectuer un test.

Filtre de recherche LDAP avancé Si le "groupe utilisateur requis" n'est pas suffisant pour filtrer, il est possible d'écrire une requête LDAP spécifique pour restreindre les comptes.


User-icon.png Synchronisation utilisateurs

La seconde partie va permettre de configurer le mapping entre l'annuaire et la déclaration dans Piwik. Ce type de configuration est classique, et dans le cadre de l'utilisation d'un annuaire OpenLDAP, les valeurs par défaut sont satisfaisantes.

Paramètre Valeur
Générer au hard un jeton d'authentification pour les nouveaux utilisateurs Lors de la première authentification d'un utilisateur, un identifiant est généré à partir du MD5 de son mot de passe si l'option n'est pas sélectionnée.

Si l'annuaire ne permet pas l'accès à ce MD5, il faut activer cette option afin d'obtenir une valeur aléatoire.

Champ ID utilisateur uid

Attribut LDAP contenant l'identifiant de l'utilisateur, qui va correspondre au login à saisir sur la page d'authentification.

Champ mot de de passe utilisateur userPassword

Attribut LDAP contenant le MD5 du mot de passe utilisateur.

Champ adresse e-mail mail

Attribut LDAP contenant l'email de l'utilisateur.

Champ alias utilisateur cn
Champ Prénom givenName
Champ Nom sn
Suffixe d'adresse e-mail vide

Ajoute un suffixe pour la génération de l'adresse mail de l'utilisateur

Sites initialement accessible en consultation pour les nouveaux utilisateurs all

Lors de la première authentification, permet de configuré les sites visibles par défaut sous Piwik


Le plugin permet également de synchroniser les droits d'accès aux sites depuis des attributs spécifiques des comptes LDAP. Pour une installation personnelle est simple, cela n'est pas le plus simple car il faut modifier les modèles dans l'annuaire. Dans un premier temps, ce n'est pas exploité.


Icon-Configuration-Settings.png Déclaration annuaire

Enfin, il faut configurer l'emplacement de l'annuaire LDAP. Mis à part le numéro de port, renseigné par défaut, tous les champs doivent être saisis.

Paramètre Valeur
URL du serveur localhost

Dans le cas où l'annuaire est sur la même machine localhost est satisfaisant, sinon saisir le nom ou l'IP du serveur.

Port du serveur LDAP 389

Le numéro de port de l'annuaire.

DN de base dc=ejnserver,dc=fr

La base de recherche dans l'annuaire.

Login connection LDAP Compte utilisé pour se connecter l'annuaire.
Mot de passe LDAP Mot de passe du compte administrateur.

Lors de la modification de la configuration, ce champ doit être laissé vide pour ne pas le modifier.


A noter qu'il est possible de configurer plusieurs annuaires LDAP en cliquant sur le bouton Ajouter.

Save-icon.png Enregistrement

Une fois les paramètres saisis, il suffit de cliquer sur le bouton Enregistrer. Si aucune erreur n'est constatée dans la configuration, un message de confirmation est présenté à l'utilisateur connecté.


Icon-log.png Validation configuration

Sur cette page de configuration, il est possible de tester certains éléments. Par exemple, le groupe utilisateur requis peut être problématique si il ne retourne aucun utilisateur. Lors que'une valeur est saisie, un lien Test est mis à disposition. En cliquant dessus, le nombre de compte répondant à ce critère est présenté.


Les paramètres de synchronisation peuvent également est validés / exploités depuis cette interface afin de synchroniser manuellement des comptes identifiés. Au niveau des paramètres de synchronisation, un encadré Charger l'utilisateur depuis le LDAP propose une zone de saisie pour indiquer le compte LDAP. Puis en cliquant sur le lien Aller, celui-ci est synchronisé. C'est un moyen très efficace pour valider le paramétrage mis en place.


Warning-icon.png Dans le cadre de cette installation, le compte a synchronisé était déjà existant dans la liste des utilisateurs. Lors du test, le message d'erreur Unable to synchronize LDAP user '...', non LDAP user with same name exists est affiché.


En travaillant sur la base de données, il est possible de paramétrer le compte comme si il avait toujours été créé depuis ce plugin. Dans le cadre de cette utilisation, la génération du jeton automatique est désactivé. Comme indiqué sur l'interface, le MD5 du mot de passe est alors utilisé. Au niveau de la base de donnée de Piwik, le compte est représenté par une ligne dans la table piwik_user et le jeton généré est inséré dans la colonne password.

Connaissant le mot de passe, il faut effectuer une transformation MD5. Cette valeur est alors préfixée avec {LDAP} puis injecté dans la table pour le compte souhaité. Cependant, la concaténation du préfixe avec le MD5, du mot de passe LDAP, entraîne une chaîne de 38 caractères. Or la colonne est configurée pour uniquement 32 caractères. Par conséquent, il faut supprimer les 6 derniers. La modification peut alors être réalisée avec la requête SQL suivante.

 UPDATE `piwik`.`piwik_user` SET `password`='{LDAP}<MD5 Mot passe LDAP>' WHERE `login`='<LOGIN UTILISATEUR>';


Examples-icon.png Echec authentification

Lors d'un échec d'authentification, suivi par un succès, un message de Warning est affiché sur l'interface indiquant une erreur de binding sur LDAP. En fait, ce message correspond au premier échec est n'est pas lié à la session en cours. Cela peut s'expliquer par le fait qu'une "erreur" est remontée, mais ne pouvant pas être affichée dans l'interface, compte anonyme n'ayant aucun accès pour cette installation, elle est affichée qu'une fois l'utilisateur connectée. Le message peut donc être fermé, en cliquant sur la croix à droite du message, sans aucune crainte.


Update icon.png Update

3.2.1 → 3.2.2 3.2.2 → 3.3.0 3.3.0 → 3.3.1 3.3.1 → 4.0.0 suite passage Piwik 3 4.0 → 4.0.1
4.0.1 → 4.0.2


Viewer icon.png Voir aussi

Documentation officielle: https://plugins.piwik.org/LoginLdap

https://github.com/piwik/plugin-LoginLdap