Authentification MD5

Mercredi 9 mars 2005 16:06 - Code

Les gens (yep, je reste vague) n'aiment pas l'authentification HTTP, alors chacun de son côté bricole. Beaucoup ont appris que ce n'était pas bien de stocker les mots de passe en clair, que ce soit dans un fichier ou une base de données et stockent alors un hash de celui-ci. Des algos de hashage, il y en a quantité, certains développeurs PHP utilisent la fonction md5(), d'autres utiliseront la fonction crypt(), d'autres encore sha1(). Et pour les autres langages, c'est le même petit jeu, chacun à son aise.

Le problème arrive en même temps que la seconde application devant utiliser les mêmes comptes utilisateurs, deux ans après la première, développeur évaporé ou presque. Évidemment c'est toujours sur moi que ça tombe, et moi, j'aime bien l'authentification HTTP:

AuthType basic
AuthName "Foobar"
AuthUserFile /path/to/passwd
Require valid-user

dans la configuration du serveur et hop, le système d'authentification est en place. Apache est pas mal, connaît de base différents systèmes de hashage, a des modules pour d'autres méthodes d'authentification, c'est super. Apache utilise une version modifiée de l'algorithme MD5, dommage, c'est justement cet algo qui est utilisé dans le dump de comptes utilisateurs en ma possession.

J'ai tenté apt-get source libapache-mod-auth-plain en me disant que je le modifierais pour gérer le MD5 puis je me suis dit que c'était trop de boulot, surtout alors que je voulais me taper au cinéma cet après-midi. Et voilà mod_python, jamais utilisé pour l'authentification, mais il peut le faire, et écrire un module d'authentification perso, c'est super facile.

import os
import md5

from mod_python import apache

def authenhandler(req):
    pw = req.get_basic_auth_pw()
    if not pw:
        return apache.HTTP_UNAUTHORIZED
    user = req.user
    pw = md5.md5(pw).hexdigest()
    for line in file(os.path.dirname(__file__) + '/passwd'):
        login, password, more = (line + ':foo:bar').split(':', 2)
        if login == user and pw == password:
            return apache.OK
    return apache.HTTP_UNAUTHORIZED

Hop, ma photo dans le journal.

Dernière modification: mercredi 9 mars 2005 16:07

J'ai suivi le lien, mais j'ai trouvé qu'une photo sur le nucléaire dans le journal !

Comment by temps on 9 mars 2005 17:44

Je suis en petit et de dos dessus, il faut un début à tout.

Comment by Frédéric on 9 mars 2005 17:57

Les commentaires sur ce billet ont été fermés.