在JDBCRealm中使用tomcat基本/摘要身份验证和散列密码的方法



我想使用tomcat基于角色的身份验证,问题是我在数据库中存储散列密码,因此不能使用基本身份验证/或摘要。是否有一种方法来比较明文密码与散列密码?我使用SHA来散列密码

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/script和PBKDF2。

相关内容

  • 没有找到相关文章

最新更新