Attualmente cerco di modificare le password nel nostro Active Directory Envoirenment tramite LDAP su Linux poiché gli utenti in questione non hanno accesso a una macchina Windows e vogliamo mantenerla in questo modo . Al fine di cambiare la password, sono attualmente bloccato a capire come usare ldapmodify per farlo. Dopo un sacco di lettura su diversi siti/forum/newsgroup sono molto più confuso di primaViolazione del vincolo LDAP quando si modifica la password in AD tramite ldapmodify
Tuttavia: cerco il seguente comando per farlo:
ldapmodify -f ldif.example -H ldaps://lab01-dc01.example.com -D 'CN=test,CN=users,DC=lab01,DC=example,DC=com' -x -W
Il contenuto del ldif.example:
dn: CN=test,CN=Users,DC=lab01,DC=example,DC=com
changetype: modify
delete: unicodePwd
unicodePwd:: V3VQdXV1STEyLg==
-
add: unicodePwd
unicodePwd:: QmxhVVVraTEyLg==
-
(non ti preoccupare - le password non vengono utilizzati da nessuna parte e non è un envoirenment produzione)
ora - ogni volta che mi eseguire il comando ottengo il seguente errore:
modifying entry CN=test,CN=Users,DC=lab01,DC=example,DC=com"
ldapmodify: Constraint violation (19)
additional info: 0000216C: AtrErr: DSID-03190EB0, #1:
0: 0000216C: DSID-03190EB0, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)
Ora, dopo quello che ho letto il motivo di questo errore è o che la password è mal formattato o che il criterio di password non consente la password che ho usato. Ho controllato la politica - più volte ora - e la nuova password è conforme in modo definitivo alla politica in base a tutti i criteri. Se imposto la password utilizzando una macchina Windows, funziona anche bene (ovviamente ho cambiato "oldpassword" e "newpassword" in seguito, dal momento che non sono autorizzato dal criterio a passare a una password precedente). La password che inserisco dopo aver passato l'opzione "-W" a ldapmodify è anche sicuramente corretta, altrimenti l'errore sputato da ldapmodify è che ho usato credenziali non valide invece di una violazione di vincolo. Quindi, l'unica ragione per cui posso pensare è in effetti una password formattata male, ma non riesco a capire da dove provenga la cattiva formattazione, dal momento che uso il normale algoritmo di base64 per codificare la password.
Qualcuno ha un'idea di cosa sta succedendo? Qualcuno può spingermi nella giusta direzione?
L'aiuto è molto apprezzato e ti ringrazio in anticipo.
Modifica: Qualcosa che mi infastidisce: Quando eseguo le stringhe codificate di base tramite base64 continua a dirmi "Input non valido". Ora - Sono andato avanti e ho ri-codificato le password con l'uso di base64 sulla macchina Linux - ma quando eseguo di nuovo la stringa generata attraverso la funzione di decodifica, base64 continua a dirmi "Input non valido" ... Le stringhe comunque leggermente cambiato tra la stringa codificata di windows-base64 e la stringa codificata di linux. Ma base64 dice semplicemente "Input non valido", non importa quello che ho inserito.
Edit2: Modifica:Non riesco a risolvere il problema: la lettura dello scopo della funzione presuppone che venga generato questo errore a causa dei punti e del punto esclamativo nella password.
Non sono sicuro che dovresti eseguire alcuna codifica. Il server LDAP dovrebbe farlo. Prova a fornire entrambe le password in formato testo. – EJP
Sì, davvero - senza codificare la password sembra funzionare bene. Proprio come ho detto: ho letto molto su questo argomento e tutto ciò che ho letto suggerisce che devo usare una stringa codificata per modificare la password. Ovviamente - questo non è del tutto vero. Grazie! – henryford