La méthode suivante permet de créer un utilisateur avec la capacité de connexion POSIX dans la base de données OpenLDAP. Les utilisateurs disposant du compte créé par la méthode suivante peuvent se connecter à n'importe quelle machine linux client OpenLDAP. En appelant cette méthode, je dois passer les variables suivantes:Comment créer un utilisateur avec la capacité de connexion POSIX dans OpenLDAP via PHP?
$ldapconn
: Renvoyé parldap_connect
.$username
: Le nom d'utilisateur que je veux créer.$password
: Le mot de passe pour se connecter au compte.
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;
}
Pour définir l'objet $info
, je référence les attributs utilisés dans un compte d'utilisateur dans Posix phpLDAPadmin et ils ont tous l'étiquette required
. Cependant, je reçois enfin l'erreur suivante:
Warning: ldap_add(): Add: Undefined attribute type
Alors, quel est l'objet $info
approprié pour créer un utilisateur POSIX?
Après le test, j'ai trouvé que 'uid' est utilisé pour le réglage' 'utilisateur NAME' dans phpLDAPadmin'. De même, si je commente 'gidNumber',' homedirectory', 'loginshell' et' posixAccount', l'erreur disparaîtra. Et, vous avez raison 'mot de passe' devrait être' userPassword' mais comment définir le cryptage à 'md5'? – Casper
Je viens de faire une recherche rapide et cela devrait vous donner une idée de comment crypter le mot de passe: http://blog.michael.kuron-germany.de/2012/07/hashing-and-verifying-ldap-passwords-in- php/ – heiglandreas
Merci beaucoup! J'ai déjà découvert comment crypter le mot de passe par 'md5'. – Casper