Как изменить атрибуты LDAP с php - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь разблокировать учетные записи Active Directory, когда пользователи 3 раза ввели неверный пароль и учетная запись заблокирована. Я нашел некоторые решения, но они не работают. Прежде всего, «lockoutTime», этот атрибут - последний раз, когда пользователь был заблокирован. Не сбрасывается при разблокировке аккаунта. «UserAccountControl» всегда показывает «NORMAL_ACCOUNT» (потому что некоторые решения здесь или на других форумах говорили, что я могу изменить статус для разблокировки).

В PSO позволяет вводить неправильный пароль 3 раза. Поэтому я взял Attibute "badPwdCount". Теперь я могу правильно показать все заблокированные учетные записи.

Но теперь я хочу разблокировать его с помощью php. На первой странице ищите заблокированные аккаунты и показывает его в виде списка. У каждого предмета есть кнопка для разблокировки. Я могу перенести переменную username на вторую страницу, чтобы программа знала, какую учетную запись нужно разблокировать.

Я хочу попытаться установить для «badpwdcount» значение 0, но ничего не происходит:

(Вторая страница )

session_start();
$aduser= $_GET['aduser'];
$ds=ldap_connect("192.168.0.17");  
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

if ($ds) {
    $base_dn = "DC=testdomain,DC=local";   
    $r=ldap_bind($ds, "admin@testdomain.local", "Test12345");
    $sr=ldap_search($ds, $base_dn, ("samaccountname=" . $aduser));

    $info = ldap_get_entries($ds, $sr);

    for ($i=0; $i<$info["count"]; $i++) {
        if ($info[$i]["badpwdcount"][0] == 3){            
            $info["badpwdcount"][0] = '0';
            $mod=ldap_mod_replace($ds,$base_dn,$info); 
        }
else {
    echo "No Connection";
}
    }
}
ldap_close($ds);



...