2010-03-01 158 views
2

我想在tomcat-users.xml中使用哈希的测试用例。 (我计划实施领域的一个类的子类与审计,日志记录等,做真正的验证)我跑的命令哈希的tomcat密码

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

,并得到了结果“秘密:e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4”。我把这个贴到了

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

line。我在我的web.xml中添加了适当的魔术字以对servlet使用DIGEST身份验证(role = test),但是当我尝试登录时,出现401错误。

我“观察”了wireshark的交易,看起来浏览器正在发送所有正确的回复。

我正在做这个对吗?在我看来,摘要认证将发回MD5(“username:realm:password”),所以tomcat无法将存储在tomcat-users.xml文件中的值与浏览器发送的值进行比较,因为它需要从tomcat-users.xml或“username:realm:password”中取消密码值。

我应该存储“username:realm:password”的散列吗?

回答

7

男孩,这是一个DUE(愚蠢的用户错误)!

我应该更仔细地阅读tomcat的文档:

如果使用带摘要认证,用于生成摘要不同的是明文密码消化。在上面的示例中,{cleartext-password}必须替换为{username}:{realm}:{cleartext-password}。例如,在开发环境中,这可能采用testUser:localhost:8080:testPassword的形式。

正是我自己的问题的最后一部分:-)。