java - Tomcat 6 - 如何配置 Digest SHA-256

标签 java mysql authentication tomcat6

我正在使用 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);

最佳答案

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

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

关于java - Tomcat 6 - 如何配置 Digest SHA-256,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367574/

相关文章:

java - Maven 多模块项目找不到兄弟模块

mysql - 哪里有东西= 1;不处理连接表 MYSQL

mysql - 连接单独的数据库时使用的连接变量?

authentication - 为什么/signin-oidc 在使用 Azure AD 登录后返回 404?

django - django restframework 中用于身份验证的自定义模型而不是默认用户模型

CakePHP 2.x身份验证条件

java - Tomcat 的 Maven 依赖排除不起作用

Java:返回相同类的对象(具有共同的父类)

java - 当派生类中重写该方法时,如何使用派生类 Object 调用基类方法?

mysql - 处理 mysql 列中空值的最佳方法