通过OpenDJ/OpenAM重置密码时遭遇Forgerock对象异常
问题:OpenDJ重置密码触发Schema违反错误(结果码65)
异常信息
The LDAP password modify operation failed with result code 65
Error Message: Entry
uid=ssssa2020@gmail.com,ou=people,dc=uppclwallet,dc=com cannot be modified
because the resulting entry would have violated the server schema: Entry
uid=ssssa2020@gmail.com,ou=people,dc=example,dc=com
violates the
Directory Server schema configuration because it contains an unknown
objectclass wallet
已尝试操作
使用ldappasswordmodify命令重置密码:
./ldappasswordmodify -h hostname -p 1389 -D "cn=Directory Manager" -w We@123 \ --authzID uid=ssssa2020@gmail.com,ou=People,dc=example,dc=com \ --newPassword Qwerty@1
同时尝试过OpenAM/OpenDJ界面操作、ldapmodify命令重置,均出现相同异常。
问题根源
错误明确指向目标条目包含未知的objectClass wallet,OpenDJ的Schema校验机制会阻止修改不符合Schema规范的条目,哪怕仅修改密码字段。
解决步骤
1. 确认目标条目的objectClass配置
用ldapsearch查询该条目的完整objectClass属性:
./ldapsearch -h hostname -p 1389 -D "cn=Directory Manager" -w We@123 \ -b "uid=ssssa2020@gmail.com,ou=People,dc=example,dc=com" \ "(objectClass=*)" objectClass
2. 修复Schema问题
根据查询结果分两种情况处理:
- 如果
wallet是误添加的无效objectClass:用ldapmodify移除该属性
创建修改文件fix-entry.ldif:
执行修改:dn: uid=ssssa2020@gmail.com,ou=People,dc=example,dc=com changetype: modify delete: objectClass objectClass: wallet./ldapmodify -h hostname -p 1389 -D "cn=Directory Manager" -w We@123 -f fix-entry.ldif - 如果
wallet是需要的自定义objectClass:先在OpenDJ中添加Schema定义- 创建Schema文件
wallet.schema,示例内容:
(替换OID、属性为实际需求)objectclass ( 1.3.6.1.4.1.XXXX.1.1 NAME 'wallet' DESC 'Custom wallet object class' SUP top STRUCTURAL MAY ( walletAttribute1 $ walletAttribute2 ) ) - 将该文件上传到OpenDJ的
config/schema目录 - 重启OpenDJ服务使Schema生效
- 创建Schema文件
3. 重新执行密码重置
完成Schema修复后,再次运行之前的ldappasswordmodify命令即可正常重置密码。
内容的提问来源于stack exchange,提问作者krishan
相关产品推荐
相关产品推荐

