Annonce

  •  » Utilisation
  •  » utilisation authentification piwigo par apache

#1 2021-05-13 18:13:42

chris972
Membre
2021-05-10
8

utilisation authentification piwigo par apache

Bonjour,

Je souhaiterais utiliser les identifiants piwigo dans une autre appli (perso) par une authentification apache/mysql, juste pour ne pas tenir à jour 2 bases de données utilisateurs.

Il me semble avoir fait ce qu'il fallait dans ma configuration apache, mais j'ai une erreur :

Code:

AH01617: user Chris: authentication failure for "/video": Password Mismatch

Je n'arrive pas à diagnostiquer si cela vient d'une méthode de hashage du mot de passe par piwigo qui serait incompatible avec le module apache (mais ce que j'ai lu me laisse penser le contraire), et dans ce cas comment y remédier, ou si c'est une erreur dans ma config que voici :

Code:

DBDriver mysql
DBDParams "host=localhost,dbname=mabase,user=apache,pass=mypassword"
DBDMin  4
DBDKeep 8
DBDMax  20
DBDExptime 300
        <Directory /var/www/localhost/htdocs/video>
                AuthType Basic
                AuthName "Videos"
                AuthBasicProvider socache dbd
                AuthnCacheProvideFor dbd
                AuthnCacheContext vps1
                Require valid-user
                AuthDBDUserPWQuery "SELECT password FROM piwigo_users WHERE username = %s"
        </Directory>

Un petit coupe de pouce ne sera pas superflu.
Merci d'avance.

Version de Piwigo: 11.4.0
Version de PHP: 7.4.19
Version de MySQL: 8.0.23
Version de Apache : 2.4.26

Hors ligne

#2 2021-05-13 19:09:27

chris972
Membre
2021-05-10
8

Re: utilisation authentification piwigo par apache

En fait, je pense que ma config n'est pas en cause puisqu'en utilisant une autre table

Code:

create table mysql_auth (
username varchar(255) not null,
passwd varchar(255),
primary key (username)
);

Et en y ajoutant le même user, mot de passe généré par htpasswd -nbs ou htpasswd (sha) -nbB (brcypt) ou encore htpasswd -nbm (MD5), cela fonctionne.

Hors ligne

#3 2021-05-13 19:32:00

k5
Équipe Piwigo
La reppe
2014-01-26
1305

Re: utilisation authentification piwigo par apache

Bonjour,
oui en batchant une table, en exemple dans ta 2eme appli créer une table automatique (comme si c'était une sauvegarde à la volée) puis supprime structure puis insère en auto la table 1 des données à chaque fois il appelle le fichier.
A très vite


Piwigo 14.4 VM alpneLinux php 8.3.6
Piwigo 14.4 php 8.3.6 -- 8.3 mysql -- ImageMagick 7.1.1.31

Hors ligne

#4 2021-05-13 21:14:12

chris972
Membre
2021-05-10
8

Re: utilisation authentification piwigo par apache

Franchement, j'ai relu un bon nombre de fois, mais je ne comprends rien à ce que tu proposes.

De toutes les façons, je ne veux pas créer une autre table puisque le sujet initial c'est d'utiliser les identifiants qui SONT dans la table de piwigo.
Je veux juste savoir comment adapter piwigo à l'authentification apache.

Hors ligne

#5 2021-05-13 22:20:20

chris972
Membre
2021-05-10
8

Re: utilisation authentification piwigo par apache

Bon, à force d'étudier le code, j'ai trouvé une solution, que je ne serai pas loin d'appeler LA solution à une nuance (d'importance) près

Code:

--- functions_user.inc.php.orig 2021-05-03 17:59:18.044738074 +0200
+++ functions_user.inc.php      2021-05-13 22:08:51.727449387 +0200
@@ -1000,7 +1000,7 @@
     // We use the portable hash feature from phpass because we can't be sure
     // Piwigo runs on PHP 5.3+ (and won't run on an older version in the
     // future)
-    $pwg_hasher = new PasswordHash(13, true);
+    $pwg_hasher = new PasswordHash(13, false);
   }
 
   return $pwg_hasher->HashPassword($password);

Et avec ça, le "hashage" du mot de passe devient compatible apache (à condition évidemment de réinitialiser les mots de passe suite à cette modif).

J'aurais évidemment largement préféré que cela passe par une option de configuration, puisque cela ne serait pas impacté par les mises à jour, et c'est pour ça que je postais ici, en espérant qu'un dev passerait par là et serait en mesure de me donner THE solution ;)

Hors ligne

#6 2021-05-14 08:40:39

nicolas
Former Piwigo Team
2004-12-30
1561

Re: utilisation authentification piwigo par apache

Pour éviter de changer un fichier du core tu peux utiliser la clé de configuration pwg_password_hash (cf include/config_default.inc.php) en utilisant ta propre fonction qui n'aura comme modification que celle que tu as apportée.


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#7 2021-05-14 16:12:43

chris972
Membre
2021-05-10
8

Re: utilisation authentification piwigo par apache

nicolas a écrit:

Pour éviter de changer un fichier du core tu peux utiliser la clé de configuration pwg_password_hash (cf include/config_default.inc.php) en utilisant ta propre fonction qui n'aura comme modification que celle que tu as apportée.

Ah bon ?

Non, plus sérieusement, je le sais bien tout ça, sinon, je n'aurais même pas pris le temps de venir poster ma solution ici.

Mais ce que vous proposez n'est pas du tout rentable, pour 2 raisons.
1) ça fait refaire tout un travail déjà fait, juste pour UN paramètre.
2) je passerai ensuite à côté de toutes les modifications (concernant cette partie du code) qu'apporteront les mises à jour. A tel point que si un jour, les dev suivent ma demande, et font de ce paramètre une option de configuration, je n'en profiterai même pas.
Alors que c'est si simple d'en faire juste une option, qui servira à tous ceux qui auront un jour ou l'autre le même besoin que moi, sans chacun refaire une partie de piwigo à sa sauce.

D'autant que si le dev en a fait un paramètre du constructeur de PasswordHash alors qu'il est systématiquement appelé avec true dans le code, c'est bien qu'il a envisagé que ça ne soit pas toujours le cas. Du coup, si ce n'est pas une option de configuration, ça n'a plus aucun intérêt.
De plus, passer ce paramètre de true à false juste dans cette fonction serait sans doute une erreur. Il faut le modifier partout, et là, on est très loin de juste changer la fonction de pwg_password_hash

Surcharger une fonction, c'est la solution quand aucune autre n'est possible.

La véritable bonne solution à mon sens c'est que le code soit modifié tel que :

Code:

--- functions_user.inc.php.orig 2021-05-03 17:59:18.044738074 +0200
+++ functions_user.inc.php      2021-05-14 16:04:02.315436550 +0200
@@ -1000,7 +1000,7 @@
     // We use the portable hash feature from phpass because we can't be sure
     // Piwigo runs on PHP 5.3+ (and won't run on an older version in the
     // future)
-    $pwg_hasher = new PasswordHash(13, true);
+    $pwg_hasher = new PasswordHash(13, $conf['portable_hashes']);
   }
 
   return $pwg_hasher->HashPassword($password);
@@ -1058,7 +1058,7 @@
     require_once(PHPWG_ROOT_PATH.'include/passwordhash.class.php');
 
     // We use the portable hash feature
-    $pwg_hasher = new PasswordHash(13, true);
+    $pwg_hasher = new PasswordHash(13, $conf['portable_hashes']);
   }
 
   return $pwg_hasher->CheckPassword($password, $hash);

avec une option :

Code:

$conf['portable_hashes'] = false;

(false dans mon cas, true par défaut)

Hors ligne

  •  » Utilisation
  •  » utilisation authentification piwigo par apache

Pied de page des forums

Propulsé par FluxBB

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