我想在LDAP中存储密码重置问题的答案。我知道答案应该用盐来解决。我想深入了解以下内容:
答案 0 :(得分:1)
我在Sun Directory Server中寻找过这样的功能,但却无法找到它。我最终在我的客户端代码中实现它(如果我没记错的话,使用java.security.MessageDigest)。这项工作并不多,但我希望它能由服务器处理。
更新
Oracle Internet Directory 11g支持散列属性: http://download.oracle.com/docs/cd/E17904_01/oid.1111/e10029/data_privacy.htm#BABFFHIH
答案 1 :(得分:0)
只是一个可能完全关闭的想法,为什么不给每个用户重复的帐户,其中密码是秘密问题的答案?
这样您就不必考虑散列/加密/加密,并验证您将调用登录用户API的答案。
那些重复的用户当然属于非常有限的安全组。
答案 2 :(得分:0)
可以使用受哈希/加密的属性的语法(例如userPassword)为安全问题/答案定义属性。这取决于您使用的目录服务器产品。
答案 3 :(得分:0)
如果要将散列/加密值存储为可读字符串(例如Base64编码),则可以使用任何目录字符串属性类型(http://tools.ietf.org/html/rfc4517#page-8)。您还可以将其存储在任何八位字节字符串属性类型(http://tools.ietf.org/html/rfc4517#page-19)中。
如果需要恢复安全问题的答案或者需要在验证期间(例如,混合/较低/大写无差异)的一些宽大处理,则加密可能是更好的选择。最好还有中间件来做这件事。就像Terry Gardner所说,这取决于你正在使用的目录服务器软件。例如,可以将IBM Security Directory Server配置为加密属性值。使用在安装软件期间指定的安全元素完成加密。该应用程序不必做任何特殊的事情。 Novell,Red Hat和Oracle / Sun Directory Server软件也支持加密属性。我不是AD专家,但我认为它不支持加密属性。我认为OpenLDAP也是如此。