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绑定为没有密码的用户?的主要内容,如果未能解决你的问题,请参考以下文章

配置 Spring Security 以在没有匿名和没有绑定 DN 的情况下针对 LDAP 进行身份验证

新手求助:websphere配置LDAP后 登陆不了

如何在 LDAP 中设置正确的访问指令?

在没有密码c#4.5的情况下检查LDAP目录的用户名

ORACLE。使用LDAP进行身份验证始终返回-16

JAVA连接LDAP(Windows AD)验证时,密码为空验证通过的问题?