1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
LDAP *ld;
char *ldap_host = "mondomaine.fr";
int ldap_port = 389;
char *root_dn = "CN=moi,OU=utilisateurs,DC=domaine,DC=fr";
char *root_pwd = "monpassadmin";
char *base;
//modifier mot de passe dans AD
BerElement* ber;
LDAPMessage* msg;
LDAPMessage* entry;
if ((ld = ldap_init(ldap_host,ldap_port))== NULL)QMessageBox::critical(0, QObject::tr("Erreur ldap"), "Pas initialiser");
if(ldap_simple_bind_s(ld,root_dn,root_pwd) != LDAP_SUCCESS)QMessageBox::critical(0, QObject::tr("Erreur ldap"), "ldap_bind not connected");
baseString = "cn="+query.value(13).toString()+", OU=groupes,DC=mondomaine,DC=fr";
base = baseString.toAscii().data();
ulong err = 1;
LDAPMod modPassword;
LDAPMod *modEntry[2];
berval pwdBerVal;
berval *pwd_attr[2];
wchar_t pszPasswordWithQuotes[1024];
// Crée un tableau de LDAPMod.
// Pour le paramètre unicodePwd, ceci DOIT être un op. simple
modEntry[0] = &modPassword;
modEntry[1] = NULL;
// Crée le struct mod pour l'attribut unicodePwd.
modPassword.mod_op = LDAP_MOD_REPLACE | LDAP_MOD_BVALUES;
modPassword.mod_type = "unicodePwd";
modPassword.mod_vals.modv_bvals = pwd_attr;
// Le mot de passe aura une valeur unique, donc nous avons un seul élément.
pwd_attr[0] = &pwdBerVal;
pwd_attr[1]= NULL;
// Place le mot de passe entre guillemets.
wsprintf(pszPasswordWithQuotes,L"\"%s\"",mdpgenerer);
// Crée la structure BER avec le mot de passe UNICODE.
pwdBerVal.bv_len = wcslen(pszPasswordWithQuotes) * sizeof(wchar_t);
pwdBerVal.bv_val = (char*)pszPasswordWithQuotes;
// Exécute une modification individuelle.
err = ldap_modify_s(ld,
base,
modEntry
);
if (err == LDAP_SUCCESS )
qDebug()<<("\nMot de passe défini correctement !\n");
else
qDebug()<<("\nÉchec lors de la définition du mot de passe !\n");
qDebug()<<err; |
Partager