Authentification Apache avec base de donnée
Lou -
Bonjour,
J'ai configuré un page web avec l'authentification basique d'Apache, liée à une base de données grâce au module mod_auth_dbd.
J'ai deux petites questions concernant les mots de passe.
1.
J'ai suivi la configuration suivante pour mon site web :
# configuration de mod_dbd # MISE À JOUR pour inclure la mise en cache de l'authentification DBDriver pgsql DBDParams "dbname=apacheauth user=apache password=xxxxxx" DBDMin 4 DBDKeep 8 DBDMax 20 DBDExptime 300 <Directory "/usr/www/mon-serveur/private"> # configuration de mod_authn_core et mod_auth_basic # pour mod_authn_dbd AuthType Basic AuthName "Mon serveur" # Pour mettre en cache les données d'authentification, placez socache # avant dbd AuthBasicProvider socache dbd # Aussi nécessaire à la mise en cache : dire au cache de mettre en # cache les recherches dbd ! AuthnCacheProvideFor dbd AuthnCacheContext mon-serveur # configuration de mod_authz_core Require valid-user # la requête SQL de mod_authn_dbd pour authentifier un utilisateur AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s" </Directory>
Cependant, pour le mot de passe de la base de données, je ne souhaite pas que le mot de passe soit mis en clair ... Connaissez-vous un moyen de passer un hash dans ce paramètre ? Ou cela n'est vraiment pas possible ?
2.
J'utilise htpasswd pour générer les mots de passe en MD5. Si j'ai bien compris, cela génère avec la commande suivante un hash md5 salé :
htpasswd -bnm user password
Cependant, je me pose la question suivante : comment Apache retrouve le sel correspondant ? Car je n'indique aucun fichier où stocker les mots de passe, donc je me pose cette question ..
La commande ci-dessus retourne :
user:$apr1$rVTM60En$vjbyUJOz8gRk7DSNOZAY2/
- Authentification Apache avec base de donnée
- Base de registre - Guide
- Apache open office gratuit - Télécharger - Suite bureautique
- Double authentification google - Guide
- Formules mathématiques de base - Télécharger - Études & Formations
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation ✓ - Forum Réseau
1 réponse
Salut,
je ne suis pas un spécialiste d'Apache mais tout doit être stocké dans la configuration du serveur. Sauf si vous précisez autrement(dans ce cas voir lien en fin de message).
Pourquoi justement ne pas utiliser la base de données pour vérifier le mot de passe en PHP?
Cela serait plus simple et efficace/standard il me semble.
Tout dépends de votre but mais pour accéder ou non à des pages(Intranet ou pages privées) il n'y a pas mieux il me semble. Vous ne précisez pas pourquoi vous voulez(ni le contexte) cela et la majorité des cas(sinon tous) seront mieux avec une identification par un programme avec mot de passe sur la BDD.
Quant au cryptage je vois peu d'intérêt si les données sont transmisses en https comme cela semble être le cas:
https://www.howtogeek.com/devops/how-to-setup-basic-http-authentication-on-apache/
Bonjour et merci pour votre réponse.
Navré pour le manque d'informations.
L'objectif est de donner accès à des listes de fichiers qui seront directement injectables dans un outil bien spécifique.
C'est pourquoi, j'ai choisi l'authentification basique car celle-ci est compatible avec l'outil qui doit pouvoir récupérer les fichiers.
J'ai souhaité tout faire dans le fichier de configuration, par simplicité, mais s'il faut passer par du PHP pour des questions de sécurité, je le ferai sans soucis. Cela pourra se faire avec l'authentification basique ?
Pour le chiffrement, en effet SSL est configuré mais je souhaitais que le mot de passe ne soit pas en clair dans la base de données. J'ai donc appris que htpasswd utilisait un sel de 8 caractères pour le md5, compatible avec le module mod_auth_dbd d'Apache.
"doit être stocké dans la configuration du serveur."
Vous savez à quel endroit ? Car je ne trouve aucun fichier qui contient les informations d'identification.
A mon avis, il n'y a pas de "fichiers" qui contiennent les idd dans ce cas, l'algo MD5 utilisé est spécifique à Apache (bouclé plusieurs fois + sel)