2014-11-06 6 views
7

Posso collegarmi correttamente a LDAP AD e modificare e creare oggetti.Come si modifica un attributo Booleano Active Directory LDAP utilizzando Net :: LDAP?

Tuttavia, se voglio aggiornare o impostare un attributo di tipo 'booleano', allora ottengo questo errore:

00000057: LdapErr: DSID-0C090C3E, comment: Error in attribute conversion operation, data 0, v1db1

Ecco un pezzo di codice Perl responsabile:

$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', 

]);

Il problema sono gli ultimi tre attributi; se sono commentati, allora funziona. Ho provato a utilizzare 0 e 1 invece di "VERO" e "FALSO", ma ottengo lo stesso problema. Sembra che il codice Net::LDAP chiama Convert::ASN1 con un tipo di string o int che non è corretto; dovrebbe usare 'boolean', ma non riesco a vedere come farlo.

+0

Ottengo: 'Bareword" true "non consentito mentre" strict subs "in uso' Perl apparentemente non ha questa costante definita. La minuscola citata dà lo stesso errore del maiuscolo citato. –

+0

Hai provato a impostare i valori su valori booleani? – Stephen

+0

Perl non ha un tipo di dati booleani. Ho aggiunto il modulo booleano ma non è stato d'aiuto. Ho provato 1, -1, 0xff, 0xffff, 0xffffffff, 'true', 'True', 'TRUE', ancora lo stesso errore di conversione di attributo. –

risposta

3

In base alle specifiche LDAP; i valori stringa di "TRUE", "True", "true", ecc. sono tutti validi.

Gli attributi sconosciuti o gli attributi non disponibili per quell'utente generano errori "Errore nell'operazione di conversione degli attributi".

Guardando gli attributi e google su di essi mostra che msExchHideFromAddressList deve essere msExchHideFromAddressLists < - nota il plurale s.

+3

Hai ragione riguardo alle "s" - questa è stata la causa dell'errore e il messaggio di errore fuorviante. Tuttavia, sembra che (sul nostro sistema almeno) i "VERO" e "FALSO" DEVONO essere in maiuscolo perché funzioni. Non posso credere di aver sbattuto la testa contro la scrivania per così tanto tempo su questo. –

+2

Posso confermare che con Spring LDAP e Openldap devo usare 'FALSE', tutto maiuscolo –