Annonce

Écrire une réponse

Veuillez écrire votre message et l'envoyer

Cliquez dans la zone sombre de l'image pour envoyer votre message.

Retour

Résumé de la discussion (messages les plus récents en premier)

Gevrey
2012-09-05 20:54:12

C'est bon j'ai trouvé, pour ceux qui cherche c'est dans include/user.inc.php à la ligne 57 :
foreach (array('REMOTE_USER', 'REDIRECT_REMOTE_USER') as $server_key)
qu'il suffit de remplacer par
foreach (array('REMOTE_USER', 'REDIRECT_REMOTE_USER','PHP_AUTH_USER') as $server_key)

Par contre en ce qui concerne le mots de passe d'après ce que j'ai lu si l'utilisateur n'existe pas il est créer avec un mots de passe vide :
register_user($remote_user, '', '', false);

Je trouve ça un peu étrange mais bon.

Gevrey
2012-09-05 19:50:33

Bonjour,

J'ai suivant les indications pour autoriser l'authentification LDAP mais je rencontre un petit problème :
je n'utilise pas apache mais NGINX or celui-ci ne stocke pas l'utilisateur dans $_SERVER['REMOTE_USER'] mais dans $_SERVER['PHP_AUTH_USER'] et le mots de passe dans $_SERVER['PHP_AUTH_PW'] j'aimerais donc savoir dans quelle fichier la variable $_SERVER['REMOTE_USER']  ce trouve pour la remplacer par $_SERVER['PHP_AUTH_USER']  ?


Cordialement,

22decembre
2011-12-09 22:09:08

En fait il s'agit juste là d'autoriser les gens à rentrer ou non sur le site. Authentification apache tout ce qu'il y a de plus basique.

Pas d'authentification d'administration. Je viens de tester suivant la méthode de ton blog. À moins que je me trompe bien sûr.

Quand je me connecte sur le site en ldap, je dois donner encore mes identifiants piwigo pour rentrer dans l'admin.

Gnubibi
2011-11-25 13:22:58

Hello,

Des news sur l'authentifiation via AD/LDAP ?
J'ai besoin aussi de mettre cette solution en place, par contre je n'y arrive pas via apache :(

A+

Eric
2011-06-14 17:48:10

Erratum ! Laisses tomber mes propos ci-dessus, flipflip. J'ai fait un amalgame trop rapide entre un LDAP et Active Directory suite à une autre discussion. Mon truc n'a donc rien à voir ;-)

Eric
2011-06-14 17:42:49

flipflip a écrit:

Le problème de cette méthode est que l'adresse e-mail n'est pas reprise.

Il y a un autre petit soucis avec la gestion des droits. Par exemple j'ai deux comptes, celui admin créé lors de l'installation, il possède tout les droits, si ce compte n'est pas présent dans votre annuaire vous ne pourrez pas vous connecter avec sans désactiver l'authentification apache. Maintenant j'ai mon vrai compte à moi (toto) qui existe dans l'annuaire, je me connecte sur le site, une boite me demande le couple utilisation/mot de passe, je remplie, il s'ajoute à Piwigo en visiteur. Si je veux le transformer en administrateur de nouveau je suis obligé de désactiver l'authentification apache, me connecter avec le compte admin et transformer toto en administrateur. On ajoute pas des comptes administrateurs tout les jours je suis d'accord.

Ces tests ont été fait sur la base d'une Piwigo 2.0.4 (ça marche même sur une version 1.7.2 ;) ) mais je pense pas que cette partie ai beaucoup changé en 2.2. Je continue mes test et si c'est concluant je passe en production :)

Si Apache sait faire des requêtes LDAP compatible AD, il doit être possible de récupérer aussi l'adresse email si elle est renseignée dans les fiches d'utilisateurs. Il suffit de trouver le bon mot clé pour l'interrogation. Je n'ai pas accès à mon AD de chez moi, je ne peux donc pas donner plus de détails mais tu devrais pouvoir trouver dans la liste des attributs de tes users AD.

flipflip
2011-06-14 16:28:02

J'avance sur le truc. Pour le moment pas touche au core de piwigo mais je test avec l'authentification externe et apache. L'idée est que se soit apache qui interroge l'annuaire ldap et non piwigo.

Dans le répertoire de votre installation créé un fichier .htaccess et ajouté ça dedans :

Code:

AuthLDAPURL ldap://AdresseDeLdap/dc=mondom,dc=fr?uid?sub?(objectClass=*)
AuthLDAPGroupAttribute memberUid
AuthLDAPGroupAttributeIsDN off

## Maintenant on lance une fenêtre d'authentification
AuthType basic
## Nom de la fenêtre d'authentification
AuthName "Restrited LDAP-protected area"
## On indique à Apache de regarder dans LDAP pour la liste des utilisateurs
AuthBasicProvider ldap
Require valid-user

Ensuite dans le fichier include/config_local.php, activer l'authentification par apache :

Code:

/ apache_authentication : use Apache authentication as reference instead of
// users table ?
$conf['apache_authentication'] = true;

Comment ça se passe ? Lors du chargement de la page, Piwigo vérifie si $_SERVER['REMOTE_USER'] comporte une valeur, si oui et si elle n'existe pas dans la base de Piwigo un compte est créé automatiquement en reprenant le nom d'utilisateur et le mot de passe. De cette manière il entre dans la gestion des users Piwigo (groupe, droit...). Le problème de cette méthode est que l'adresse e-mail n'est pas reprise.

Il y a un autre petit soucis avec la gestion des droits. Par exemple j'ai deux comptes, celui admin créé lors de l'installation, il possède tout les droits, si ce compte n'est pas présent dans votre annuaire vous ne pourrez pas vous connecter avec sans désactiver l'authentification apache. Maintenant j'ai mon vrai compte à moi (toto) qui existe dans l'annuaire, je me connecte sur le site, une boite me demande le couple utilisation/mot de passe, je remplie, il s'ajoute à Piwigo en visiteur. Si je veux le transformer en administrateur de nouveau je suis obligé de désactiver l'authentification apache, me connecter avec le compte admin et transformer toto en administrateur. On ajoute pas des comptes administrateurs tout les jours je suis d'accord.

Ces tests ont été fait sur la base d'une Piwigo 2.0.4 (ça marche même sur une version 1.7.2 ;) ) mais je pense pas que cette partie ai beaucoup changé en 2.2. Je continue mes test et si c'est concluant je passe en production :)

plg
2011-06-14 15:07:10

flipflip a écrit:

Avant que je me lance est-ce qu'il y a eu des évolutions de ce côté ?

Non, mais je viens de corriger des bugs sur le système d'authentifcation externe. Les corrections seront disponibles dans Piwigo 2.2.4

flipflip
2011-06-14 09:28:49

Bonjour à tous,

Je reviens trainer mes paluches ici pour voir :) C'est surtout que je dois faire évoluer mon installation de Piwigo au boulot et cette fois elle doit être accessible à toute la boite donc pas le choix je vais devoir connecter Piwigo à l'annuaire LDAP. Avant que je me lance est-ce qu'il y a eu des évolutions de ce côté ?

Gotcha
2011-05-09 16:58:42

Cédric a écrit:

Est ce que cela sera prévu un jour ou l'autre ?

Ce dont on manque ce sont des petites mains pour coder tout ça :-D

Cédric
2011-05-09 16:53:58

Dommage....
Une telle application devrait, à mon avis, intégrer ce type d'authentification (c'est tout ce qui lui manque pour que je l'adopte).
Aujourd'hui beaucoup d'outils inclus l'authentification LDAP soit de base soit par plugins additionnels (GLPI, Dokuwiki, Wordpress, Nagios, Grr, .....la liste est longue).

Est ce que cela sera prévu un jour ou l'autre ?

Dans tout les cas même si cette fonction n'est pas présente j'ai pu tester et bravo au dev, c'est un très bon boulot.

Gotcha
2011-05-09 15:22:54

Cédric a écrit:

Si vous avez trouvé une solution je suis preneur !

Il n'y a rien eu de neuf à ce sujet :-|

Cédric
2011-05-09 15:20:53

Bonjour,

Navré pour ce détérage de topic....
J'aimerais savoir si vous aviez trouvé une solution pour votre plugin (j'ai recherché dans la jungle des plugins disponibles mais je n'ai rien trouvé concernant le LDAP).

Je doit mettre en place une galerie de médias dans mon entreprise.
Nous utilisons OpenLDAP pour tout les outils que j'ai mis ne place et j'aimerai avoir une galerie utilisant ma base LDAP pour l'authentification ainsi que la gestion des droits.
Malheureusement je n'ai trouvé aucune galerie le permettant.

Si vous avez trouvé une solution je suis preneur !

Merci par avance.

Cordialement.

Cédric

flipflip
2009-07-28 14:08:44

Bonjour à tous,

Depuis quelques semaines j'essaie de mettre en place l'authentification externe mais via un annuaire ldap sur Piwigo. Après avoir passé le cap des requêtes sur l'annuaire, la comparaison des mots de passes je coince sur la récupération d'autres informations.

Mais avant d'aller plus loin un petit rappel (du moins ce que j'ai réussi à comprendre) sur la procédure d'authentification.
Dans le cas normal il existe 8 tables lié à la gestion des utilisateurs, la table #_users est le point névralgique de l'authentification. Elle contient le strict minimum (nom d'utilisateur, mot de passe, adresse e-mail) ensuite elle est secondée par la table #_user_infos qui elle contient le profil de l'utilisateur. Les autres  #_user* n'ont rien à voir avec l'authentification. Depuis la branche 1.6 (il me semble) a été introduit la notion d'authentification externe, le but est de pouvoir utiliser une autre table (d'un autre programme) pour gérer les accès. Le principe est simple, dans le fichier config_local.inc.php il suffit de remplir les correspondances pour le nom de la table de l'autre appplication, le champ nom d'utilisateur, mot de passe, e-mail). Mais aussi pour l'utilisateur invité et webmaster, vient ensuite une purge de certains enregistrement de Piwigo.

Dans la pratique la procédure est simple (une fois bien paramétré). Pour le cas d'un couplage avec le forum PunBB,  l'utilisateur toto possède un compte actif sur le forum. Lorsqu'il rentre ces informations de nom d'utilisateur et de mot de passe dans Piwigo la fonction getuserdata() dans functions_user.inc.php réalise une requête par rapport aux correspondances, Ensuite une autre requête est faite, elle permet de savoir si cet utilisateur c'est déjà connecté à Piwigo. Si oui alors la procédure continue, si non la table #_user_infos est remplie avec les valeurs par défaut définis dans la configuration de Piwigo et ensuite ça continue.

Dans cette configuration c'est tout simplement génial et très facile à mettre en place.

Maintenant le cas d'un annuaire Ldap. Pour faire simple un annuaire ldap permet de centraliser tout les informations de nom d'utilisateur, mot de passe, email et tout un tas d'autre information qui évolue suivant les applications utilisé. La grosse différence est qu'il n'est pas possible de faire des requêtes en SQL. Premier problème la correspondance des champs (peut varier suivant votre shema d'annuaire)

Code:

$conf['user_fields'] = array(
  'id' => 'id',
  'username' => 'uid',
  'password' => 'userPassword',
  'email' => 'mail'
  );

// guest_id : id of the anonymous user
$conf['guest_id'] = 1013;
// default_user_id : id of user used for default value
$conf['default_user_id'] = $conf['guest_id'];
// webmaster_id : webmaster'id.
$conf['webmaster_id'] = 1001;

Tout compte fait c'était pas si dure ;) Jusque là c'est ok niveau config. Pour le moment je passe sous silence l'utilisation d'un vrai compte, je réalise les tests uniquement avec le compte guest (invité). Je fais la purge et je recharge ma page et soudain c'est le drame :(

Code:

Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /data/www/dev/galleries/html/2.0/include/functions_user.inc.php on line 274

En faute toujours la fonction gestuserdata() qui veut absolument faire une requête SQL... Pour contourner le

Code:

$row = array_merge($row, mysql_fetch_array($result));

problème je vois deux solutions :
- Créer une couche qui gère les différentes méthodes et qui est utilisable par les plugins;
- Ajout d'un trigger et c'est au plugin de s'adapter.

Je pense que la seconde méthode est la plus simple. Par exemple la fonction getuserdata() pourrait ressembler à ça en algo, particulièrement ce bout :

Code:

  $query = '
SELECT ';
  $is_first = true;
  foreach ($conf['user_fields'] as $pwgfield => $dbfield)
  {
    if ($is_first)
    {
      $is_first = false;
    }
    else
    {
      $query.= '
     , ';
    }
    $query.= $dbfield.' AS '.$pwgfield;
  }
  $query.= '
  FROM '.USERS_TABLE.'
  WHERE '.$conf['user_fields']['id'].' = \''.$user_id.'\'
;';

  $row = mysql_fetch_array(pwg_query($query));

Code:

MaVar est un tableau
MaVar = EntréePlugin('login_other', 'TableauUser')
Si MaVar est vide alors
  Lancement de la requête SQL
Fin si

Ça c'est le côté simple, et je pense que ça peut être facilement intégré. Au contraire il me semble que se genre de requête est réalisé à différent endroit de Piwigo et c'est à ce moment là qu'une couche d'authentification sera intéressante. Le core ne gère que des variables et la couche s'occupe de la communication avec les différents services d'authentification.

Bien sur les annuaires ldap sont rarement utilisé pour des applications sur le net, mais ils sont très courant en Intranet. Je ne sais pas si la team pense un jour évolué vers cette idée ?! En tout cas moi je sèche :)

Merci d'avoir pris le temps de me lire jusqu'à la fin.

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2022 · Contact