我正在使用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);
答案 0 :(得分:1)
实际上,答案很简单 - 创建一个自定义Tomcat领域。领域是执行实际身份验证的部分,如果要对数据库进行测试(特别是加密或散列),则必须覆盖领域身份验证方法。
请参阅http://www.christianschenk.org/blog/setup-your-own-tomcat-security-realm/