1

我正在使用 Tomcat 6,目前表单身份验证在 MySql 数据库中用作明文密码。我已经在密码中添加了加密以散列 SHA-256 中的密码,它似乎可以工作,但是当我尝试使用 server.xml 中的 digest="SHA-256" 和 digestEncoding="base64" 通过 Tomcat 6 进行身份验证时,它不会进行身份验证。如果我从数据库中复制密码并将其输入密码字段,我可以验证我的用户。

如何让 Tomcat 允许我使用普通密码但在 MySql 中存储的哈希密码对用户进行身份验证?

这是我添加到我的应用程序的哈希代码:

    MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    byte bin[] = messageDigest.digest(password.getBytes("UTF-8"));
    return Base64.encodeBase64String(bin);
4

1 回答 1

1

这个问题的答案实际上很简单——创建一个自定义的 Tomcat 领域。领域是执行实际身份验证的部分,如果您想针对您的数据库进行测试(特别是如果加密或散列),领域身份验证方法是您必须覆盖的。

http://www.christianschenk.org/blog/setup-your-own-tomcat-security-realm/

于 2013-01-18T15:23:56.960 回答