通过OpenAM在OpenDJ创建用户时遇未知objectclass inetadmin错误
解决OpenAM创建用户时LDAP错误码65(未知对象类inetadmin)问题
问题背景
使用OpenAM 12.0.0 + OpenDJ 2.6.0通过API创建用户时返回400错误,LDAP错误码65,OpenDJ日志显示条目包含未知对象类inetadmin。
原因分析
LDAP错误码65对应对象类违规,说明OpenAM在创建用户条目时自动附加了OpenDJ schema中不存在的inetadmin对象类。该对象类不属于OpenDJ标准schema,也不是OpenAM 12的默认用户对象类,通常由OpenAM身份库配置错误导致。
解决方案
1. 修正OpenAM身份库的用户对象类配置
- 登录OpenAM管理控制台,导航至 配置 > 服务器和站点 > 你的OpenAM实例 > 身份库
- 找到「用户对象类」或「默认对象类」配置项,检查是否包含
inetadmin,将其从列表中移除 - 若使用了用户模板,进入身份库 > 用户模板,同样删除模板中的
inetadmin对象类 - 保存配置后重新测试用户创建
2. 验证OpenDJ Schema(可选)
通过LDAP查询确认OpenDJ中无inetadmin定义:
ldapsearch -h opendj.example.com -p 389 -D "cn=Directory Manager" -w {你的管理员密码} -b "cn=schema" "(objectclass=subschema)" objectclasses | grep -i inetadmin
若返回空,说明该对象类确实不存在,必须从OpenAM配置中移除。
3. 临时应急:API请求中指定合法对象类
如果无法立即修改OpenAM配置,可在创建用户的API请求中明确指定OpenDJ支持的标准对象类,覆盖默认设置:
curl \ --request POST \ --header "iplanetDirectoryPro: AQIC5w...2NzEz*" \ --header "Content-Type: application/json" \ --data \ '{ "username": "dummyName", "userpassword": "secret12", "mail": "dummyName@example.com", "objectclass": ["top", "person", "organizationalPerson", "inetOrgPerson"] }' \ http://openam.example.com:8080/openam/json/users/?_action=create
inetOrgPerson是OpenDJ默认支持的标准用户对象类,包含mail、userpassword等所需属性。
4. 排查自定义扩展(若上述方法无效)
如果配置中未找到inetadmin的引用,可能是自定义的OpenAM插件、认证模块或用户创建脚本强制添加了该对象类:
- 检查OpenAM的认证 > 模块中的自定义配置
- 查看脚本模块中是否有用户创建相关的脚本逻辑
- 排查第三方扩展插件的影响
内容的提问来源于stack exchange,提问作者NiceBoy
相关产品推荐
相关产品推荐

