【问题标题】:way to use tomcat basic/digest authentication with hashed passwords in JDBCRealm?在 JDBCRealm 中使用带有散列密码的 tomcat 基本/摘要身份验证的方法?
【发布时间】:2015-08-16 21:33:58
【问题描述】:

我想使用 Tomcats 基于角色的身份验证,问题是我将密码存储在我的数据库中,因此无法使用基本身份验证/或摘要。有没有办法将明文密码与散列密码进行比较?我正在使用 SHA 对密码进行哈希处理。

【问题讨论】:

    标签: java tomcat authentication jdbc jdbcrealm


    【解决方案1】:

    Tomcat 可以散列用户尝试的密码并将其与数据库中的密码进行比较。这不适用于HTTP DIGEST,但它应该适用于HTTP BASIC。您可能希望使用DataSourceRealm 而不是JDBCRealm,因为它的性能会更好。

    只需像这样配置您的<Realm>

    <Realm className="org.apache.catalina.realm.DataSourceRealm"
      dataSourceName="jdbc/myDataSource"
           userTable="users"
         userNameCol="user_name"
         userCredCol="user_pass"
       userRoleTable="user_roles"
         roleNameCol="role_name"
              digest="SHA1" />
    

    显然,您必须自定义上述值以匹配您数据库中的值。

    请注意:如果您的用户数据库被盗,SHA1 散列不足以保护存储的凭据不被逆向工程。您将需要实施某种密码强化策略来保护用户的凭据。我建议尝试从 SHA1 转移到 PBKDF2、bcrypt/scrypt 之类的东西,甚至使用 SHA-512 和盐和不平凡的迭代次数(如数千次)。 Tomcat 的最新版本可以为您处理迭代和加盐,还允许您相当轻松地插入其他功能,例如 bcrypt/scrypt 和 PBKDF2。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-12
      • 2013-05-16
      • 2014-10-26
      • 1970-01-01
      • 2016-08-17
      • 2017-09-19
      • 2012-02-20
      • 2012-09-16
      相关资源
      最近更新 更多