Caractéristiques
Basée sur la contribution Authentification externe par une base MySql, cette variante se distingue par les faits suivants :
- Les requêtes ne se basent non plus sur la fonction spip_query mais s’effectuent à partir de la librairie Pear DB, ce qui permet de faire abstraction du serveur de base de données (MySQL, PostgreSQL, InterBase, Mini SQL, Microsoft SQL Server, Oracle 7/8/8i, ODBC, SyBase, Informix, FrontBase).
- Fonctionne avec des versions récentes de spip (développé et testé sous SPIP 1.8.2 g)
- Utilisation d’un champ optionnel pour spécifier si l’utilisateur est autorisé à s’identifier sous spip et permet de spécifier différentes valeurs de ce champ pour répartir les utilisateurs entre rédacteurs et administrateurs (si ce champ optionnel n’est pas spécifié, tous les utilisateurs sont par défaut de simples auteurs)
- Possibilité de récupérer le profil d’un utilisateur à partir de 2 tables jointes à partir d’une clé (optionnel et utile lorsque le profil d’un utilisateur est réparti sur 2 tables, par exemple une table pour les paramètres de connexions et une table pour les informations personnelles).
- Pas d’interface d’installation donc réservé à des utilisateurs avertis (désolé !). L’installation de cette contribution se fait après avoir installé normalement spip et le paramétrage s’effectue uniquement en éditant le fichier de configuration
inc_connect.php3
- Ajout du cryptage de mot de passe de type unix (crypt avec salt). Message d’erreur si le serveur externe d’authentification est down.
Cette variante a été développée pour répondre au besoin de permettre à des utilisateurs dont le profil est stocké dans une base postgreSQL de s’identifier sous spip et spikini. De plus, les profils utilisateurs sont stockées dans 2 tables différentes nécessitant une jointure. En outre, avec les versions 1.8.2 de spip, le fichier inc_login.php3
a été remplacé par formulaires/inc-login_public.php3
ce qui oblige a quelques adaptations mineures par rapport à la contribution originale.
Pré-requis
La librairie Pear DB doit être préalablement installée et accessible dans le path courant par php, ceci afin de pouvoir inclure DB.php
.
Installation
Modification du noyau de spip
Il est nécessaire d’effectuer des modifications minimes dans spip_cookie.php3
et formulaires/inc-login_public.php3
- Dans spip_cookie.php3
, sous les lignes :
// Essayer differentes methodes d'authentification
$auths = array('spip');
include_local(_FILE_CONNECT); // pour savoir si ldap est present
if ($ldap_present) $auths[] = 'ldap';
ajoutez la ligne :
if ($bddext_present) $auths[] = 'bddext';
- Dans formulaires/inc-login_public.php3
, remplacez la section :
AND !$GLOBALS['ldap_present'])
par :
AND !$GLOBALS['ldap_present'] AND !$GLOBALS['bddext_present'])
Attention cette modification est à reporter 2 fois (recherchez le mot ldap pour trouver les 2 lignes à modifier - lignes 98 et 113 dans la version utilisée).
Fichier à ajouter
Il s’agit du module d’authentification externe inc_auth_bddext.php3
a ajouter dans le répertoire /ecrire/
Paramétrage de l’authentification externe
Tous le paramétrage d’effectue par l’intermédiaire du fichier inc_connect.php3
contenu dans le répertoire /ecrire/
Il faut ajouter à la fin de ce fichier :
// Activation authentification externe
$GLOBALS['bddext_present'] = TRUE;
// Type de BD :
// mysql MySQL - pgsql PostgreSQL - ibase InterBase - msql Mini SQL - mssql Microsoft SQL Server
// oci8 Oracle 7/8/8i - odbc ODBC (Open Database Connectivity) - sybase SyBase - ifx Informix - fbsql FrontBase
// Voir Documentation PEAR DB pour plus d'informations
$GLOBALS['bddext_type'] = "pgsql";
// Paramètres de connexion au serveur de BD
$GLOBALS['bddext_server']="localhost";
$GLOBALS['bddext_user'] = "USER";
$GLOBALS['bddext_password'] = "PASSWORD";
$GLOBALS['bddext_base'] = "vhffs4";
// Paramètres de la table(s) utilisée(s) pour les auteurs
$GLOBALS['bddext_table'] = "vhffs_users";
$GLOBALS['bddext_table_jointure'] = "vhffs_user_info";
$GLOBALS['bddext_champ_jointure'] = "uid";
// Paramètrage des champs utilisés
// Seuls les champs nom, email, login_ext et pass sont obligatoires
$GLOBALS['bddext_champs'] = array(
'prenom' => 'firstname',
'nom' => 'lastname',
'bio' => '',
'email' => 'mail',
'nom_site' => '',
'url_site' => '',
'login_ext' => 'username',
'pass' => 'passwd',
'statut' => 'admin',
'pgp' => '',
'alea_actuel' => ''
);
// Type de cryptage du mot de passe
// 1:mot de passe en clair - 2:md5 - 3:challenge_md5 (spip) - 4:unix
$GLOBALS['bddext_type_pass']=4;
// Spécification des statuts : auteur ou modérateur
// Dans cet exemple on spécifie alors que si le champ correspondant au statut est égale à 1 ou 2
// il s'agit d'un simple administrateur, si le champ est égal à 3 il s'agit d'un auteur
// dans les autres cas, l'utilisateur n'est pas autorisé à disposer d'un compte spip
// Mettre le champ 'statut' à '' pour ne pas utiliser cette fonctionnalité, auquel cas tous les
// utilisateurs sont de simples auteurs
$GLOBALS['bddext_admin'] = array(1,2);
$GLOBALS['bddext_auteur'] = array(3);
Effectuer le paramétrage de l’authentification externe :
- Le champ
bddext_type
spécifie le serveur de base de donnée (selon la syntaxe des containers Pear DB). - Le champ
bddext_table
spécifie la table servant à stocker les utilisateurs. - Si les profils utilisateurs sont répartis sur 2 tables, il faut spécifier les champs
bddext_table_jointure
(seconde table) etbddext_champ_jointure
(nom de la clé utilisée pour faire la jointure entre les 2 tables). Dans le cas contraire, mettre à vide ces 2 champs. - Le champ
prenom
est optionnel. S’il est spécifié, le nom de l’utilisateur sera la concaténation du prénom et du nom sous la forme « Prenom NOM ». - Le champ
statut
est optionnel. S’il est spécifié, il permet de préciser quel est le champ utilisé pour savoir si l’utilisateur est autorisé à accéder à l’interface privée de spip et si oui quels sont les valeurs associés aux rédacteurs et aux administrateurs (par le biais debddext_admin
etbddext_auteur
. Si le champstatut
n’est pas spécifié, tous les utilisateurs sont rédacteurs. - Le champ
bddext_type_pass
permet de spécifier le cryptage utilisé pour les mots de passe. - Les champs
bddext_admin
etbddext_auteur
ne sont utilisés que si le champstatut
est précisé. Ces champs sont des tableaux de valeur permettant de spécifier quel(s) valeur(s) correspond(ent) aux statuts d’administrateurs et de rédacteurs.
Discussions par date d’activité
Une discussion
A noter une version plus aboutie et maintenue de cette contrib sous la forme d’un plugin pour spip 1.9. Disponible sous SVN, la version en plugin présente les avantages suivants : pas de modifications à effectuer sur le noyau de spip, la configuration s’effectue via des formulaires de l’interface privée de spip et la librairie pear DB n’est pas nécessaire si la base externe est une base MySQL. Des ajouts sont envisagés à court terme pour éviter (en option) la double authentification spip / autre application (nécessite que spip et l’application qui gère la BD externe soit accessible via le même domaine pour s’échanger les cookies). Merci pour vos retours et en particulier pour des serveurs de BD autres que MySQL et Postgresql.
ATTENTION : le lien pour le plugin est http://trac.rezo.net/trac/spip-zone...
Pour le récupérer sous format .zip, c’est dans http://miroirspip.ventre.name/build...
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |