2014-11-06 111 views
7

我可以成功綁定到AD LDAP,並修改和創建對象。如何使用Net :: LDAP修改布爾LDAP活動目錄屬性?

但是,如果我想更新或設置類型「布爾」的屬性,然後我得到這個錯誤:

00000057: LdapErr: DSID-0C090C3E, comment: Error in attribute conversion operation, data 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', 

]);

問題是最後三個屬性;如果他們被註釋掉了,那麼它就可以工作。我試過用0和1代替'TRUE'和'FALSE',但我得到同樣的問題。看起來Net::LDAP代碼調用Convert::ASN1的類型爲stringint,這是不正確的;它應該使用'布爾',但我看不出如何使它做到這一點。

+0

我得到:''Bareword'true'不允許使用'strict subs'' Perl顯然沒有定義這個常量。引用的小寫字母與引用的大寫字母給出了相同的錯誤。 – 2014-11-06 01:44:54

+0

您是否嘗試將值設置爲布爾文字? – Stephen 2014-12-02 08:52:41

+0

Perl沒有布爾數據類型。我添加了布爾模塊,但這也沒有幫助。嘗試了1,-1,0xff,0xffff,0xffffffff,'true','True','TRUE',仍然有相同的屬性轉換錯誤。 – 2014-12-03 19:27:37

回答

3

根據LDAP規範;字符串值「TRUE」,「True」,「true」等都是有效的。

未知屬性或該用戶不可用的屬性將引發'屬性轉換操作中的錯誤'錯誤。

縱觀屬性和使用Google他們表明msExchHideFromAddressList應該是msExchHideFromAddressLists < - 注意是複數秒。

+3

你是對的's' - 這是失敗的原因,以及誤導性的錯誤信息。但是,似乎(至少在我們的系統中)「真」和「假」必須用大寫字母表示。我不敢相信我在這張桌子上撞了很長時間。 – 2014-12-05 02:19:55

+2

我可以確認,使用Spring LDAP和OpenLDAP我必須使用'FALSE',所有大寫 – 2015-06-03 15:06:49