Как создать пользователя с возможностью входа в POSIX в OpenLDAP через PHP?

Следующий метод используется для создания пользователя с POSIX возможность входа в базу данных OpenLDAP. Пользователи, имеющие учетную запись, созданную следующим способом, могут войти в систему на любом клиентском компьютере с ОС OpenLDAP. При вызове этого метода я должен передать следующие переменные:

  • $ldapconn Возвращено ldap_connect,
  • $username : Имя пользователя, которое я хочу создать.
  • $password : Пароль для входа в учетную запись.

    public static function createNewUser($ldapconn, $username, $password) {
if (!$ldapconn) { return false; }
require_once("LDAPConfigurator.php");
$r = ldap_bind($ldapconn, "cn=admin,dc=test,dc=com", "12345");

// Prepare data
$info = [
'cn'            => $username,
'sn'            => $username,
'gidNumber'     => 502,
'homedirectory' => "/home/ldap/".$username,
'loginShell'    => "/bin/sh",
'password'      => $password,
'uidNumber'     => 2333, // Can I set auto increment for this value?
'username'      => $username,
'objectclass'   => [
'inetOrgPerson',
'posixAccount',
'top'
]
];

// Add data to directory
$r = ldap_add($ldapconn, "cn=".$username",cn=users,ou=groups,dc=test,dc=com", $info);

return true;
}

Для настройки $info объект, я ссылаюсь на атрибуты, используемые в учетной записи пользователя POSIX в phpLDAPadmin и все они имеют required этикетка. Тем не менее, я, наконец, получаю следующую ошибку:

Warning: ldap_add(): Add: Undefined attribute type

Так что же такое $info объект для создания пользователя POSIX?

1

Решение

Похоже, вы пытаетесь добавить атрибут, который не поддерживается. username не поддерживается ни inetOrgPerson, ни posixAccount, а атрибут пароля должен быть userPassword согласно posixAccount.

Для получения дополнительной информации посмотрите поддерживаемые атрибуты на http://www.zytrax.com/books/ldap/ape/#objectclasses

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]