2010-03-01 8 views
2

J'essaie d'utiliser le hachage pour un cas de test dans tomcat-users.xml. (Je prévois mettre en œuvre une sous-classe de l'une des classes de royaume pour faire le véritable authentification avec l'audit, l'exploitation forestière, etc.) J'ai couru la commandeHashing mots de passe tomcat

$TOMCAT_HOME/bin/digest.sh -a sha secret 

et a obtenu le résultat «secret: e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4. J'ai collé ceci dans le

<user password="e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4" roles="test" username="tester"/> 

ligne. J'ai ajouté les mots magiques appropriés à mon fichier web.xml pour utiliser l'authentification DIGEST pour le servlet (rôle = test), mais lorsque j'essaie de me connecter, j'obtiens une erreur 401. J'ai "regardé" les transactions avec wireshark, et il semble que le navigateur envoie toutes les bonnes réponses.

Est-ce que je fais cela correctement? Il me semble que l'authentification digest va renvoyer MD5 ("nom d'utilisateur: domaine: mot de passe"), donc il n'y a aucun moyen pour tomcat de comparer la valeur stockée dans le fichier tomcat-users.xml avec la valeur envoyée par le navigateur, car cela nécessiterait de "désassembler" la valeur du mot de passe de tomcat-users.xml ou "username: realm: password".

Devrais-je stocker le hachage de "nom d'utilisateur: domaine: mot de passe" à la place?

Répondre

7

Garçon, c'était un DUE (erreur d'utilisateur bête)!

Je aurais dû lire les documents tomcat plus attentivement:

Si vous utilisez des mots de passe avec l'authentification DIGEST digérées, le texte clair utilisé pour générer le résumé est différent. Dans les exemples ci-dessus {cleartext-password} doit être remplacé par {username}: {realm}: {cleartext-password}. Par exemple, dans un environnement de développement, cela peut prendre la forme testUser: localhost: 8080: testPassword.

Exactement la dernière partie de ma propre question :-).