LDAP绑定为没有密码的用户?
Posted
技术标签:
【中文标题】LDAP绑定为没有密码的用户?【英文标题】:LDAP bind as a user without password? 【发布时间】:2012-03-08 21:17:39 【问题描述】:我们有一个忘记密码系统,允许用户创建新密码。它与 LDAPS 上的 Active Directory 相冲突。现在,一旦用户创建新密码,我们必须以管理员身份绑定,将密码更改为随机字符串,然后使用该随机字符串绑定到用户帐户,然后将密码更改为他们提供的密码。我们这样做是因为我们有最近 5 个使用过的密码的密码历史策略。
现在可以正常工作,但密码历史记录中的随机字符串是以前的密码之一。有没有办法绑定用户但没有密码?在此之前,用户将通过安全问题进行身份验证。
【问题讨论】:
密码历史中出现的密码是什么问题?这就是它的用途。 【参考方案1】:我以不同的方式做这件事。我在用户的入口下创建了一个动态对象,几天后到期,带有生成的uid属性;向他们发送包含该 uid 的链接;这导致更改密码页面,但通过不同的 LoginModule 登录,该登录模块看到 UID 参数,检查它,如果存在且正确登录它们。换句话说,一种“票证”登录。
执行查找的代码将自身绑定/重新连接为应用程序本身,但这实际上并不重要,因为登录连接会立即关闭,就像应用程序中的所有其他 LDAP 连接实际上一样。当对用户自己的条目进行任何操作时,例如更改密码,更新配置文件,以该用户使用我在会话中保存的密码完成重新连接。当用户对 LDAP 执行任何其他操作时,实际上是应用程序在执行此操作,因此如上所述完成了应用程序绑定/重新连接。 IOW 应用程序本身就是一个用户(甚至是几个具有不同权限级别的不同用户)。
因为 UID 比密码长得多,并且包含它的条目在一两天后过期,所以所有这些都比生成临时密码并发送它更安全。如果通过票证登录,更改密码页面上也可能有一个安全问题。
【讨论】:
【参考方案2】:AD中有两种密码修改操作——reset和change。重置是一项管理操作(这就是您在此处所做的)。进行重置时,您无需提供当前密码。更改密码是最终用户操作,除了新密码外,用户还必须提供当前密码。
如果您更改代码以执行密码reset 并在有权重置密码的用户的上下文中运行,那么您应该很高兴。如果您需要在重置期间遵守密码策略,还有一种方法可以使用特殊的 LDAP 控件来执行此操作。
【讨论】:
您是说有一个 LDAP 控件可以使密码重置遵循密码策略?什么是控制? 是的 - 请参阅此博客以获取使用它的示例blog.msresource.net/2011/05/30/…。知识库文章support.microsoft.com/?id=2386717也以上是关于LDAP绑定为没有密码的用户?的主要内容,如果未能解决你的问题,请参考以下文章