Aller au contenu

[RESOLU] Apache 1.3 - Auth avec MySQL


ggbce

Messages recommandés

C'est la première fois que j'utilise l'authentification HTTP via une base de données MySQL. Peut-être ai-je fait un erreur ... ?

Voici ma configuration:

- Apache 1.3.27

- Module mod_auth_mysql 1.11

J'ai édité mon fichier /etc/httpd/conf/httpd.conf

et j'ai ajouté ces lignes:

LoadModule mysql_auth_module  modules/mod_auth_mysql.so
...
AddModule mod_auth_mysql.c
...
<Directory "/serveur/test">
AuthType Basic
AuthName "TEST Only"
Auth_MySQL_Info localhost user password
Auth_MySQL_DB authenticate
Auth_MySQL_Password_Table login
Options None
Order deny,allow
Allow from all
<Limit GET>
require group master
require valid-user
</Limit>
</Directory>

Quand je redémarre Apache, j'ai cette erreur:

Starting httpd: Syntax error on line 180 of /etc/httpd/conf/httpd.conf:
Invalid command 'Auth_MySQL_Info', perhaps mis-spelled or defined by a module not included in the server configuration
[FAILED]

D'après les instructions que j'ai lu... j'ai pourtant bien fait les bonnes choses et si je regarde quels sont les modules chargés, le module mod_auth_mysql est bien là !

Lien vers le commentaire
Partager sur d’autres sites

Et bien... après plusieurs recherches, j'ai trouvé un seul site qui utilise des commandes différentes pour la configuration avec MySQL. Et ces commandes semblent vouloir fonctionner.

Donc, au-lieu de

<Directory "/serveur/test">
AuthType Basic
AuthName "TEST Only"
Auth_MySQL_Info localhost user password
Auth_MySQL_DB authenticate
Auth_MySQL_Password_Table login
require group master
require valid-user
</Directory>

j'utilise

<Directory "/serveur/test">
AllowOverride AuthConfig
AuthType Basic
AuthName "TEST Only"
AuthMySQLHost localhost
AuthMySQLUser user
AuthMySQLPassword password
AuthMySQLDB authenticate
AuthMySQLUserTable login
require group master
require valid-user
</Directory>

Maintenant, le lancement de Apache se fait sans erreur !!!

J'essais ensuite d'accéder à ma section de test

http://mon.serveur.com/test/

il m'apparaît la fnêtre d'authentification, j'y entre mot utilisateur et mon mot de passe (que j'ai ajouté dans la BD MySQL)... mais la fenêtre d'authentification me redemande toujours mon mot de passe, comme s'il n'était pas valide.

Donc il y a un p'tit problème de communication entre Apache et MySQL je crois !

Comment tester si Apache transmet correctement les données vers MySQL et vice-versa ?

Lien vers le commentaire
Partager sur d’autres sites

Et bien... après plusieurs recherches, j'ai trouvé un seul site qui utilise des commandes différentes pour la configuration avec MySQL. Et ces commandes semblent vouloir fonctionner.

Donc, au-lieu de

<Directory "/serveur/test">
AuthType Basic
AuthName "TEST Only"
Auth_MySQL_Info localhost user password
Auth_MySQL_DB authenticate
Auth_MySQL_Password_Table login
require group master
require valid-user
</Directory>

j'utilise

<Directory "/serveur/test">
AllowOverride AuthConfig
AuthType Basic
AuthName "TEST Only"
AuthMySQLHost localhost
AuthMySQLUser user
AuthMySQLPassword password
AuthMySQLDB authenticate
AuthMySQLUserTable login
require group master
require valid-user
</Directory>

Maintenant, le lancement de Apache se fait sans erreur !!!

J'essais ensuite d'accéder à ma section de test

http://mon.serveur.com/test/

il m'apparaît la fnêtre d'authentification, j'y entre mot utilisateur et mon mot de passe (que j'ai ajouté dans la BD MySQL)... mais la fenêtre d'authentification me redemande toujours mon mot de passe, comme s'il n'était pas valide.

Donc il y a un p'tit problème de communication entre Apache et MySQL je crois !

Comment tester si Apache transmet correctement les données vers MySQL et vice-versa ?

J'ai jamis fais je peux pas t'en dire plus.

Par contre, concernant savoir si les données sont transmises, je te conseil de faire dans trois onglets de terminal differents:

tail -f /var/log/apache2/access.log

et

tail -f /var/log/apache2/error.log

et

tail -f <log my sql>

emplacement du log mysql que tu trouves dans ton /etc/mysql/my.cnf, rubriques mysqld ...

A ce moment la, tu recommences et tu verras jusqu'ou tu vas ;-)

Lien vers le commentaire
Partager sur d’autres sites

Merci du conseil !

Je vais essayer ça.

Entre-temps j'ai trouvé un peu plus où ça bloque ?

Il est possible d'utiliser l'option

AuthMySQLNoPasswd On

pour authentifier les usagers sans mot de passe. Lorsque cet option est activé, ça fonctionne !!! Donc le problème est avec l'authentification du mot de passe plus précisément.

Je sais qu'il y a un autre option pour déterminer quel type de champs contient le mot de passe qui s'appelle "AuthMySQLPwEncryption" avec les choix : none, crypt, scrambled, md5, aes et sha1... mais lorsque j'ajoute cette ligne Apache refuse de démarré comme lorsque j'utilisais les mauvaises options au début. D'après les infos cet option n'est disponible qu'avec les dernières versions de mod_auth_mysql.

Lien vers le commentaire
Partager sur d’autres sites

Finalement en cherchant un peu plus loin... dans une partir pas très définie par les créateurs de mod_auth_mysql, j'ai trouvé une explication et une solution.

L'option AuthMySQLPwEncryption (none | crypt | scambled | md5 | aes | sha1) fonctionne pour les versions 2.60 et + et il est possible d'utiliser les options dans les anciennes versions:

AuthMySQLCryptedPasswords (On | Off)

AuthMySQLScrambledPasswords (On | Off)

AuthMySQLMD5Paswords (On | Off)

AuthMySQLAESPasswords (On | Off)

AuthMySQLSHA1Passwords (On | Off)

(Note: ces options devraient disparaître dans les version 3.x de mod_auth_mysql pour laisser uniquement AuthMySQLPwEncryption).

Alors j'ai configuré mon fichier httpd.conf avec:

AuthMySQLCryptedPasswords Off

Et ça fonctionne !!!

Donc, par défaut Apache demande un mot de passe encrypté à MySQL... mais en quel sorte d'encryption je sais pas, c'est pas spécifié non plus. Probablement que ce sera "AuthMySQLScrambledPasswords On" = Encryption MySQL PASSWORD.

Pour le moment je vais me contenter d'utilisateur avec des mot de passe en texte clair car je récupère ceux-ci des base MySQL que j'avais déjà créé pour mon inventaire des usagers de ce site.

Va falloir que je m'attaque à l'encryption des données plus tard afin que Apache puisse communiquer des mots de passes cryptés et que mes pages PHP d'insertion des users me permettent de les entrer avec cet encryption.

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...