openLDAP 新手 - 我试图简单地将一个 base64 编码的二进制(16Kb)图像添加到photo
person objectClass 的属性中,但无论我如何尝试,我都只会收到此错误'没有语法 1.3.6.1.4.1.1466.115.121.1.23 的验证器“”。
另外,将 ldif 更改为流式传输二进制图像(使用photo: <file:///tmp/t1.png
)也会失败并出现相同的错误。
我尝试使用 Apache Directory Studio(它获取二进制文件并将其转换为 base64 表示),但失败并出现相同的错误。我能够使用“相同的 base64 文本”针对属性运行它jpegPhoto
(因此这表明编码格式正确),但我只是想了解为什么它对照片属性失败 - 有人能解释一下吗?这是针对 Centos 上最新的 OpenLDAP 的全新安装。
谷歌搜索这个错误给了我谷歌黑客。
答案1
每个 LDAP 服务器都配置有架构每个 LDAP 属性都有特定的“语法”。它们并非全部定义为任意字符串或 blob – 它们需要符合其语法,LDAP 服务器会尝试验证该语法。
该photo
属性最初定义为具有图像具体来说在 CCITT“第 3 组传真”图像格式中 – 这就是语法OID有问题的意思。
(这就是为什么jpegPhoto
它是一个单独的属性——它是后来添加的,以保持与旧目录和客户端的兼容性,因为更改现有“照片”字段的数据类型不是一个好主意。)
目前您收到错误消息是因为 OpenLDAP 服务器实际上根本不支持这种数据格式,但如果它支持,您仍然会收到关于 (JPEG) 数据未被识别为 G3Fax 图像数据的不同消息。
您可以编辑属性的 OpenLDAP 模式来更改它接受的数据类型(通过 cn=config)或者您可以继续使用较新的“jpegPhoto”属性。