ldap_add(): Добавить: нарушение ограничений

#php #ldap #apacheds

#php #ldap #apacheds

Вопрос:

Я изучаю, как выполнять операции CRUD в каталоге LDAP и использовать ApacheDS для этой цели.Я пытаюсь добавить нового пользователя, но продолжаю получать следующее предупреждение:

 Warning: ldap_add(): Add: Constraint violation
  

Вот код php, который я использую:

 <?php
function ldap_add_user($user)
{
    include('ldap_config.php');
    include('ldap_admin.php');

    $connect = ldap_connect($host, $port);

    if ($connect) 
    {   
        ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);

        $bind = ldap_bind($connect,$username,$password); 

        $info['uid'] =  $user['mail_id'];
        $info['userPassword'] = $user['password'];
        $info['cn'] =  $user['firstname'].' '.$user['lastname'];
        $info['sn'] =  $user['lastname'];
        $info['objectClass'][3] = "inetOrgPerson";
        $info['objectClass'][2] = "organizationalPerson";
        $info['objectClass'][1] = "person";
        $info['objectClass'][0] = "top";
        $dn="uid=".$user['mail_id'].", ou=auth_users, o=mycompany";

        $r = ldap_add($connect,$dn,$info);
        ldap_close($connect);
        return true;
    }
    else
    {   
        return false;
    }
}
?>
  

И, что интересно, приведенный выше код отлично работает, когда я использую цифровой пароль для $user[‘password’] , но когда я передаю буквенно-цифровые или нечисловые пароли, я получаю предупреждение, упомянутое выше.

Комментарии:

1. LDAP возвращает ошибку 19 при попытке добавить значение атрибута, которое не соответствует ограничениям по размеру, или при попытке добавить 2-е значение к атрибуту, который допускает присутствие только одного значения.

2. Что сработало для меня, так это изменение атрибута ads-pwdcheckquality с 2 на 0. У меня не было много времени, чтобы разобраться, почему именно это работает, но я считаю, что это ослабляет критерии по умолчанию, установленные для ограничений для атрибута userPassword.

3. Спасибо, что задали этот вопрос @user3739870, у меня такая же проблема. Наиболее предпочтительно я хотел бы выбрать безопасный пароль, у кого-нибудь есть решение для этого? Если нет, где вы изменили атрибут «ads-pwdcheckquality»?

Ответ №1:

Если вы используете Apache Directory Studio, щелкните правой кнопкой мыши на соединении, выберите «Открыть конфигурацию» и перейдите на вкладку «Политики паролей». Справа вы увидите опцию «Проверить качество».Включите его в «Отключено».