Carnet Wiki

Auteurs : Logins et LDAP

Version 20 — Mars 2014 YannX

La gestion des Auteurs est authentifiée avec un couple Login / Password géré dans le code de SPIP [1] (tant à l’installation qu’en interface privée).

Politique de sécurité

Les login et password sont contrôlés dans les formulaires de saisie-modification :
-  à l’installation
-  dans l’interface privée

La longueur du login est contrôlée en standard à plus de trois(3) caractères,
normalement définissable par une macro _LOGIN_TROP_COURT
<code class=« php sans_telechargement »>
// ./ecrire/inc/utils.php [1690]
// taille mini des login
if (!defined(’_LOGIN_TROP_COURT’)) define(’_LOGIN_TROP_COURT’, 4) ;

La longueur du mot de passe est de mêmecontrôlée en standard à plus de cinq(5) caractères par la macro _PASS_LONGUEUR_MINI :
<code class=« php sans_telechargement »>
// ./ecrire/inc/utils.php [1702] //gagnerait a etre remonté en [1690+]
if (!defined(’_PASS_LONGUEUR_MINI’)) define(’_PASS_LONGUEUR_MINI’,6) ;

Ces valeurs sont surchargeables dans ./config/mes_options.php

  • exemple correct : /ecrire/auth/spip.php [148]
  • action/inscrire_auteur.php [115] function test_inscription_dist(..)
  • Mais :
    les tests n’utilisent pas toujours le define, et le message n’utilise pas la valeur paramétrée :

- en SPIP 2.1.21


-  la saisie à l’installation :

  • install/etape_3b.php [35]   : ((strlen($login)<{{3}}) ?
  • install/etape_3b.php [36] _T('info_login_trop_court')
    devrait être _T('info_login_trop_court_car_pluriel',array('nb'=>_LOGIN_TROP_COURT));
    -  l’ecran de saisie-modification d’auteur : prive/formulaires/editer_auteur.html
  • editer_auteur.html [86] <p class='explication'>(<:texte_plus_trois_car:>)</p>
  • editer_auteur.html [99] <p class='explication'>(<:info_plus_cinq_car:>)</p>
  • editer_auteur.php [94] appelle $err = auth_verifier_login($auth_methode, _request('new_login'), $id_auteur)
  • editer_auteur.php [105] appelle $err = auth_verifier_pass($auth_methode, _request('new_login'),$p, $id_auteur)
    -  ces fonctions de controle sont dans ecrire/inc/auth.php et utilisent
    qui appelle auth_administrer('verifier_login',$args= ($auth_methode, _request('new_login'), $id_auteur),'')

-  la création d’auteur :

  • action/inscrire_auteur.php [173] if (strlen($login_base) < 3) {
  • action/inscrire_auteur.php [177] if (strlen($login_base) < 3)

-  l’usage en figure aussi dans ./squelettes-dist/formulaires/mot_de_passe.php

  • squelettes-dist/formulaires/mot_de_passe.php [59] else if (strlen(_request('oubli')) < 6)
  • squelettes-dist/formulaires/mot_de_passe.php [60] $erreurs['oubli'] = _T('info_passe_trop_court');

-  les chaines de langue correspondantes sont dans ecrire/lang/ecrire_fr.php

  • ecrire_xx.php [457] ’info_login_trop_court’ => ’Login trop court.’,
  • ecrire_xx.php [527] ’info_passe_trop_court’ => ’Mot de passe trop court.’,
  • ecrire_xx.php [530] ’info_plus_cinq_car’ => ’plus de 5 caractères’,
  • ecrire_xx.php [531] ’info_plus_cinq_car_2’ => ’(Plus de 5 caractères)’,
  • ecrire_xx.php [532] ’info_plus_trois_car’ => ’(Plus de 3 caractères)’,
  • ecrire_xx.php [1076] ’texte_plus_trois_car’ => ’plus de 3 caractères’,

- en SPIP 3..11

Badidon a signalé le fil forum.spip.net/fr_243674.html , qui parle du pb d’installation avec ldap et propose de modifier le fichier ecrire/install/etape_3.php.
----

----

La Gestion LDAP

La gestion LDAP est intégrée nativement depuis la doc SPIP 2001, par détection de la bibliothèque php_ldap à l’installation ; cela permet de proposer la connexion à une base LDAP, ce qui crée seulement le fichier ./config/ldap.php [2] par function etape_ldap5_save() [3] au format ci-dessous :

<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS['ldap_base'] = 'DC=KFG,DC=local';
$GLOBALS['ldap_link'] = @ldap_connect('192.168.18.10','389');
@ldap_set_option($GLOBALS['ldap_link'],LDAP_OPT_PROTOCOL_VERSION,'3');
@ldap_bind($GLOBALS['ldap_link'],'','');
$GLOBALS['ldap_champs'] = array('login' => array('sAMAccountName','uid','login','userid','cn','sn'), 'nom' => 'cn','email' => 'mail','bio' => 'description',);
?>

Le nom de ce fichier est passé dans la chaine de connection du fichier principal ./config/connect.php en paramètre optionnel : spip_connect_db(,,,,,,$prefix,$options) .

-Nota Bene : L’installation de la connexion en SPIP 3 semble poser problème : voir lien : voir Refondre LDAPeupl pour SPIP 3 ? !

-  Plusieurs define permettent de pré-paramétrer l’accès LDAP :

  • _INSTALL_HOST_LDAP
  • _INSTALL_PORT_LDAP
  • _INSTALL_TLS_LDAP (avec ou sans Transport Layer Service)
  • _INSTALL_PROTOCOLE_LDAP (version 2 ou version 3)
  • voir aussi _INSTALL_OPT_PROTOCOLE_LDAP (?)
  • _INSTALL_USER_LDAP
  • _INSTALL_PASS_LDAP
    -  le processus d’installation propose aussi le paramétrage de la chaine d’interrogation du login, vers une branche de l’annuaire LDAP ; à leur première connexion, les informations auteur nécessaires à SPIP seront recopiées dans la table spip_auteurs , mais le mot de passe restera vérifié seulement dans l’annuaire LDAP.

Les Plugins LDAP

Deux plugins complètent le fonctionnement avec un annuaire LDAP
-  Peuplement-LDAP initialise la liste des auteurs à partir d’une recherche sur un annuaire LDAP, à la première connexion avec les droits définis par défaut.._ lancement manuel par

/?exec=peuplement_ldap
en SPIP 3 : activation OK, mais l'installation echoue

-  LDAPlus paramétre le choix des valeurs d’un annuaire ldap inscrites dans la table auteur de spip
lancement manuel par /?exec=ldaplus
(en cas d’utilisation avec PeuplementLDAP, les auteurs sont importés et non créés au login)

Voir aussi l’interaction avec http://contrib.spip.net/Gestion-de-...

Une refonte intégrant ces plugins est en-cours, à proposer pour SPIP 3 : voir Refondre LDAPeupl pour SPIP 3 ?.

La plus riche compilation de références SPIP - LDAP avec CAS-SSO http://icp.ge.ch/sem/cms-spip/spip....

voir aussi http://contrib.spip.net/Une-authentification-SSO-pour-l

un vieil article de synthèse sur CAS