我的网络应用程序依赖于容器管理的安全性,我想知道是否可以使用盐渍密码。据我所知,只需配置JDBC或DataSource Realm就可以很容易地将消化的密码存储在数据库中,但是无法为这些摘要添加盐。
有什么建议吗?
编辑:在提问之前我似乎还需要多考虑一下; - )
只需选择谁在进行摘要计算(客户端或服务器)并相应地配置Tomcat。
答案 0 :(得分:3)
如果您正在创建和存储摘要,则可以同时创建和存储盐。
您的身份验证表将包含 .... pwdDigest varchar(64), - 或int256(如果有) hashSalt int64, ....
然后根据您使用的auth协议,当您获得客户端加密的用户名时,将hashSalt发送到客户端,或者如果您明确收到密码,则使用它来散列密码。
我不熟悉您所谈论的数据库访问技术,所以如果我错过了这一点并且过于简化了答案,我会道歉。
答案 1 :(得分:3)
Tomcat 5.5和6.0不支持JDBCRealms和DataSourceRealms中的salted密码。这是一个已知的错误,建议的补丁似乎工作正常,但它尚未被接受。
如果您不想应用补丁,至少可以将其用作实施示例:
Bug 45871 - Support for salted and digested patches in DataSourceRealm
答案 2 :(得分:0)
JCE中基于Passord的加密根据PKCS#5使用salt。有关示例,请参阅http://java.sun.com/j2se/1.4.2/docs/guide/security/jce/JCERefGuide.html#PBEEx。