我想使用基于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 / scrypt和PBKDF2。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句