OpenLDAP初始登录未触发强制密码重置问题求助
以下是针对你遇到问题的具体排查点和解决方法:
确认ppolicy模块已加载并关联到数据库
OpenLDAP的密码策略功能依赖ppolicy模块,首先检查模块是否成功加载:ldapsearch -Q -Y EXTERNAL -H ldapi:/// -b cn=module{0},cn=config cn=*若输出中没有
cn=ppolicy,需要手动加载模块:ldapadd -Q -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/ppolicy.ldif同时要确保数据库配置中指定了默认策略的DN,执行以下命令检查:
ldapsearch -Q -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}mdb,cn=config olcPPolicyDefault输出应指向你的默认密码策略条目(例如
cn=default,ou=policies,dc=yourdomain,dc=com),若为空则需要添加该配置项。验证用户pwdReset属性的类型和值
确保用户someone的pwdReset是布尔类型的TRUE,而非字符串:ldapsearch -x -b dc=yourdomain,dc=com uid=someone pwdReset如果输出显示
pwdReset: "TRUE"(带引号),说明是字符串类型,需要重新设置:ldapmodify -x -D cn=admin,dc=yourdomain,dc=com -W <<EOF dn: uid=someone,ou=users,dc=yourdomain,dc=com changetype: modify replace: pwdReset pwdReset: TRUE EOFOpenLDAP中布尔值不需要加引号,字符串类型的
TRUE不会触发密码重置逻辑。使用支持密码策略控制的客户端测试
ldapwhoami工具默认不会请求passwordPolicyRequest控制,因此服务器不会返回强制重置的提示。换用支持该控制的命令测试,比如:ldapsearch -x -D uid=someone,ou=users,dc=yourdomain,dc=com -W -b dc=yourdomain,dc=com -E ppolicy执行后如果返回
passwordPolicyResponse控制信息,提示pwdReset为TRUE,说明策略本身有效,问题出在客户端未支持该控制。你需要确保业务客户端启用了密码策略控制才能触发强制重置流程。检查默认密码策略的完整性
确认默认策略条目包含完整的pwdPolicy对象类和正确的属性:ldapsearch -x -b cn=default,ou=policies,dc=yourdomain,dc=com objectClass pwdMustChange pwdAllowUserChange输出必须包含
objectClass: pwdPolicy、pwdMustChange: TRUE,且pwdAllowUserChange应为TRUE(否则用户无法自行修改密码,强制重置流程无法执行)。
内容的提问来源于stack exchange,提问作者James Kim

