LDAP以更改用户密码

LDAP以更改用户密码,ldap,change-password,Ldap,Change Password,正如我所知,在PHP中,我们需要通过SSL连接LDAP以更改用户密码 是否有其他方法,例如,其他语言(JAVA/ASP)可以在不需要SSL的情况下更改LDAP密码 谢谢 更新: 当我试图修改自己的帐户密码时,我得到了“警告:ldap\u mod\u replace()[function.ldap mod replace]:Modify:访问权限不足”。 如果我尝试更改其他用户密码,则不会收到任何错误消息,但密码仍然保持原来的密码。许多LDAP实现确实需要SSL或TLS才能更改/设置密码。这是LD

正如我所知,在PHP中,我们需要通过SSL连接LDAP以更改用户密码

是否有其他方法,例如,其他语言(JAVA/ASP)可以在不需要SSL的情况下更改LDAP密码

谢谢

更新: 当我试图修改自己的帐户密码时,我得到了“警告:ldap\u mod\u replace()[function.ldap mod replace]:Modify:访问权限不足”。
如果我尝试更改其他用户密码,则不会收到任何错误消息,但密码仍然保持原来的密码。

许多LDAP实现确实需要SSL或TLS才能更改/设置密码。这是LDAP服务器设置的需求,而不是用于访问它的语言。更改语言将不允许您覆盖此特定服务器要求

我知道,在某些情有可原的情况下,您可能无法建立SSL/TLS连接,但一般来说,您绝对希望像这样加密密码功能-即使服务器不需要它


编辑:我打赌答案可以在slapd日志中找到。还值得查看ACL:

目录将密码值存储在用户的userPassword属性中 进入根据服务器的访问控制设置,用户可以设置 根据您指定的密码策略,使用 标准工具,例如ldapmodify

ldapmodify -h host -p port -D "cn=Directory Manager" -w password dn: uid=bjensen,ou=People,dc=example,dc=com changetype: modify replace: userPassword userPassword: ChAnGeMe ldapmodify-h主机-p端口-D“cn=目录管理器”-w密码 dn:uid=bjensen,ou=People,dc=example,dc=com 变更类型:修改 替换:userPassword 用户密码:ChAnGeMe
您使用的是OpenLDAP还是Active Directory?他们都需要一个安全的连接来让你更改密码

您不能使用ldap_mod_replace使用PHP更改Active Directory密码,如果您不是管理员,则必须使用ldap_modify_batch

看一看:


如果使用“替换”(不发送旧密码),则只有管理员可以更改密码。但是,如果使用带有删除(使用旧密码)和添加(使用新密码)的批处理,则用户可以更改自己的密码:

ldappasswd
实用程序。e、 g

ldappasswd -H ldap://ldap.example.com:389 -D "uid=account-name,ou=serviceaccounts,dc=example,dc=com" -S -W -ZZ

如果返回了
参考
,则您需要尝试该服务器。通常当有一个主服务器和多个只读服务器时。

实际上,您可以在PHP中执行此操作,而无需使用PHPs
COM
扩展的SSL/TLS连接(但是使用
COM
意味着您需要为应用程序使用Windows操作系统)

使用
COM
也会忽略广告服务器的密码策略复杂性要求(不确定原因)


使用RootDN绑定更改用户密码

ldappasswd -H ldap://server_domain_or_IP -x -D "cn=admin,dc=example,dc=com" -W -S "uid=bob,ou=people,dc=example,dc=com"

这可能取决于您使用的LDAP服务。我知道有一种软件允许用户重置/更改密码,尽管我当前的LDAP没有启用SSL@也许我误解了你的问题。听起来好像您试图绕过ldap服务器指定的ssl要求。我很高兴你能成功!没有。这是第三方软件,但现在我正在尝试使用PHP进行开发。还要注意,这两种操作是不同的:执行
ldap\u mod\u replace
(或
ldap\u modify\u batch
ldap\u modify\u batch\u replace
)会导致密码重置操作,使用带有
ldap\u modify\u batch
时,删除
和添加
是一种密码更改操作。主要区别在于,重置操作使得无法访问以前加密的文件(因为它们是用旧密码加密的),而更改操作则不受此限制(因为文件是用旧密码解密并用新密码重新加密的)。
ldappasswd -H ldap://server_domain_or_IP -x -D "cn=admin,dc=example,dc=com" -W -S "uid=bob,ou=people,dc=example,dc=com"