【问题标题】:Storing Password Reset Questions in LDAP在 LDAP 中存储密码重置问题
【发布时间】:2009-06-25 10:56:16
【问题描述】:
我想在 LDAP 中存储密码重置问题的答案。我知道答案应该用盐散列。我想深入了解以下内容:
- 我们应该使用什么属性类?
- 是否可以让 LDAP 服务器执行散列操作?
- 如果容器不公开它如何执行散列,有没有办法使用 LDAP 比较操作?
- 答案是否因您选择的目录服务供应商而异?
- 是否可以为此目的扩展密码属性类?
【问题讨论】:
标签:
security
encryption
active-directory
ldap
passwords
【解决方案2】:
只是一个可能完全不可行的想法,为什么不为每个用户创建一个重复的帐户,其中密码是秘密问题的答案?
这样您就不必考虑散列/盐/加密和验证您将调用登录用户 API 的答案。
那些重复的用户当然属于非常有限的安全组。
【解决方案3】:
可以使用受散列/加密的属性的语法定义安全问题/答案的属性,例如 userPassword。这取决于您使用的目录服务器产品。
【解决方案4】:
如果要将散列/加密值存储为可读字符串,例如 Base64 编码,则可以使用任何目录字符串属性类型 (https://www.rfc-editor.org/rfc/rfc4517#page-8)。您也可以将其存储在任何八位字节字符串属性类型 (https://www.rfc-editor.org/rfc/rfc4517#page-19) 中。
如果需要恢复安全问题的答案或在验证过程中需要一些宽大处理(例如,混合/小写/大写无差异),则加密可能是更好的选择。最好有中间件来执行此操作。就像 Terry Gardner 所说,这取决于您使用的目录服务器软件。例如,可以将 IBM Security Directory Server 配置为加密属性值。加密是使用软件安装期间指定的安全元素完成的。该应用程序不必做任何特别的事情。 Novell、Red Hat 和 Oracle/Sun Directory Server 软件也支持加密属性。我不是 AD 专家,但我认为它不支持加密属性。我认为 OpenLDAP 也是如此。