我可以成功绑定到AD LDAP,并修改和创建对象.
但是,如果我想更新或设置类型'布尔'的属性,那么我收到此错误:
00000057:LdapErr:DSID-0C090C3E,注释:属性转换操作出错,数据0,v1db1
这是一段负责的Perl代码:
$rv = $ldap->add($dn, attr=> [
cn => [$u],
objectClass => [ 'top','person', 'organizationalPerson', 'contact' ],
displayName => "$u Mailing List",
mail => $email,
name => $u,
mailNickname => $local,
proxyAddresses => [
"SMTP:$email",
"smtp:$local\@$SERVERDOM",
],
givenName => $u,
targetAddress => "SMTP:$email",
internetEncoding => 1310720,
msExchAddressBookFlags => 1,
msExchModerationFlags => 6,
msExchProvisioningFlags => 0,
msExchHideFromAddressList => 'TRUE',
msExchBypassAudit => 'FALSE',
msExchMailboxAuditEnable => 'FALSE',
Run Code Online (Sandbox Code Playgroud)
]);
问题是最后三个属性; 如果他们被评论出来,那么它是有效的.我尝试使用0和1而不是'TRUE'和'FALSE',但我得到了相同的问题.似乎Net::LDAP
代码调用Convert::ASN1
的类型string
或int
不正确; 它应该使用'boolean',但我看不出如何做到这一点.
该ldapsearch(1)
命令从LDAP服务器检索对象,并将它们打印为LDIF结构,如下所示(不是真实数据):
dn: mail=foo@domain.com,dc=domain,dc=com
objectclass: top
objectclass: person
mail: foo@domain.com
userPassword:: hdfy74dhn79wdhyr74hy7489fhw46789f
如果属性包含非ASCII数据,则它是Base64编码的,由::
属性名称后的双精度表示。此外,似乎所有被调用的属性userPassword
都将始终如此编码,即使它是ASCII干净的也是如此。
我想做的就是告诉ldapsearch
不要这样做。我无法找到要传递的选项标志来抑制此行为;仅在LDAP_PASSWD_DEBUG
禁用的情况下重新编译源代码。
是否有未公开的选项来防止这种编码?
(不考虑安全性等,因为这是出于测试目的)