我正在尝试在tomcat-users.xml中对测试用例使用散列。 (我计划实现其中一个Realm类的子类,以便通过审计,日志记录等进行真正的身份验证。)我运行了命令
$TOMCAT_HOME/bin/digest.sh -a sha secret
并得到结果'秘密:e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4'。我将其粘贴到
中<user password="e5e9fa1ba31ecd1ae84f75caaa474f3a663f05f4" roles="test" username="tester"/>
线。我在web.xml中添加了适当的魔术字,以便对servlet使用DIGEST身份验证(role = test),但是当我尝试登录时,我收到401错误。
我“看着”与wireshark的交易,似乎浏览器正在发送所有正确的回复。
我这样做了吗?在我看来,摘要认证将发送回MD5(“用户名:realm:密码”),因此tomcat无法将存储在tomcat-users.xml文件中的值与浏览器发送的值进行比较,因为它需要从tomcat-users.xml“取消”密码值或“username:realm:password”。
我应该存储“username:realm:password”的哈希值吗?
答案 0 :(得分:7)
男孩,这是一个DUE(愚蠢的用户错误)!
我应该更仔细地阅读tomcat文档:
如果使用带有DIGEST身份验证的消化密码,则用于生成摘要的明文不同。在上面的示例中,{cleartext-password}必须替换为{username}:{realm}:{cleartext-password}。例如,在开发环境中,这可能采用testUser:localhost:8080:testPassword形式。
我自己问题的最后一部分: - )。