Echec de la première connexion des utilisateurs LDAP et non création de leur compte
version de SPIP : 3.2.1 [23954] version de PHP : 5.6.33 version de MySQL : 14.14
Jusqu'à il n'y a pas si longtemps (désolé pour l'imprécision, on ajoute pas des utilisateurs si fréquemment), les utilisateurs LDAP pouvaient s'authentifier sur SPIP et l'utilisateur SPIP était créé dans la base de donnée. J'ai remarqué récemment que les nouveaux arrivants ne pouvaient plus s'authentifier, et donc créer leur compte, de cette manière.
Problème
Ce problème a été remarqué sur le site en production mis à jour en 3.2.1, ainsi que sur une installation de test 3.2.1 propre (attention au "bug de config LDAP":https://forum.spip.net/fr_263478.html?debut_forums=%40266046#forum266046 ).
Le site SPIP est configuré pour utiliser l'authentification LDAP ;
Un nouvel utilisateur est créé dans le LDAP ;
Il se connecte au site SPIP avec ses identifiants LDAP ;
La connexion échoue systématiquement.
La demande #3824 (closed) offre une solution avec _AUTORISER_AUTH_FAIBLE
mais elle ne me semble pas satisfaisante sachant que LDAP est configurable à l'installation de SPIP, le mode par défaut devrait assurer que l'on puisse se connecter.
Workaround
Il y a au moins deux solutions qui fonctionnent :
insert into spip_auteurs ...
)
La création de l'utilisateur à la main dans la base de donnée permet à l'utilisateur de se connecter (
define ('_AUTORISER_AUTH_FAIBLE', true);
Mettre Analyse
Lors de la toute première authentification d'un utilisateur inconnu de SPIP, le mot de passe est envoyé sécurisé par défaut (hachage réalisé par le javascript avec les aleas actuel/futur). Seulement l'authentification LDAP requiert le mot de passe en clair. Lorsque l'utilisateur existe déjà et que la source est ldap
, alors la sécurisation du mot de passe est désactivée (login.js
, login-sha-min.js
, le cadenas à côté du champ mot de passe disparait), d'où le fonctionnement du workaround 1. Si on désactive la sécurisation du mot de passe, workaround 2, alors cela fonctionne lors de la première authentification, et l'utilisateur est bien créé dans SPIP.
Remarque
L'envoi en clair n'est pas un gros problème dans notre cas, le site est forcé en HTTPS.