Commandes LDAP avec PHP
Aller à la navigation
Aller à la recherche
Rechercher un utilisateur dans l'annuaire
La fonction attend les informations suivantes :
- Nom de la personne recherchée.
- Prénom de la personne recherchée.
La fonction retournera le résultats suivant en fonction des conditions suivantes :
- L'utilisateur a été trouvé : retourne un tableau avec les informations de l'utilisateur.
- L'utilisateur n'a pas été trouvé : retourne le code d'erreur 404.
- La requête n'a pas aboutie : retourne le code d'erreur 500.
- La requête est interdite : retourne le code d'erreur 403.
<?php
# CONFIG. CONNECTEUR AD
# ------------------------------
# À renseigner
# Domaine ActiveDirectory
define("LDAP_DOMAIN","ncad.fr");
# Serveur ActiveDirectory
define("LDAP_SERVER_NAME","ldaps://".LDAP_DOMAIN);
# Compte AD utilisé pour exécuter la commande
define("LDAP_SERVER_LOGIN","JOB0001-NCAD");
# Mot de passe du compte AD
define("LDAP_SERVER_PASSWORD","M0n#P45-sW0rDSuQ3Rc0pl!qu3");
# OU recherche comptes utilisateurs
define("LDAP_DN","OU=FIGEAC,DC=ncad,DC=fr");
# FONCTION ldap_search_user
# ------------------------------
function ldap_search_user($firstname, $lastname)
{
if ($ldap_connection=@ldap_connect(LDAP_SERVER_NAME)) {
$ldapBind = ldap_bind($ldap_connection,LDAP_SERVER_LOGIN."@".LDAP_DOMAIN,LDAP_SERVER_PASSWORD);
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3) or die('Unable to set LDAP protocol version');
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search.
$ldap_base_dn = LDAP_DN;
$search_filter = "(&(sn=$firstname)(givenname=$lastname))";
$attributes = array();
$attributes[] = 'givenname';
$attributes[] = 'mail';
$attributes[] = 'samaccountname';
$attributes[] = 'sn';
$attributes[] = 'department';
$result = ldap_search($ldap_connection, $ldap_base_dn, $search_filter, $attributes);
if (FALSE !== $result){
$entries = ldap_get_entries($ldap_connection, $result);
if ($entries['count'] >= 1) {
$result = $entries;
} else {
$result = "404";
}
} else {
$result = "403";
}
ldap_unbind($ldap_connection); // Clean up after ourselves.
} else {
$result = "500";
}
return $result;
}
# TEST DE LA FONCTION
# ------------------------------
$ldap_search_result = ldap_search_user(
"CACHELOU",
"Nicolas"
);
print_r($ldap_search_result);
?>
Modifier la valeur d'un attribut pour un compte donné
La fonction attend les informations suivantes :
- Nom d'utilisateur Windows de la personne recherchée.
La fonction retournera le résultats suivant en fonction des conditions suivantes :
- Le compte a été trouvé : retourne un tableau avec les informations de l'utilisateur.
- Le compte n'a pas été trouvé : retourne le code d'erreur 404.
- La requête n'a pas aboutie (serveur indisponible ou requête interdite) : retourne le code d'erreur 403.
<?php
# CONFIG. CONNECTEUR AD
# ------------------------------
# À renseigner
# Domaine ActiveDirectory
define("LDAP_DOMAIN","ncad.fr");
# Serveur ActiveDirectory
define("LDAP_SERVER_NAME","ldaps://".LDAP_DOMAIN);
# Compte AD utilisé pour exécuter la commande
define("LDAP_SERVER_LOGIN","JOB0001-NCAD");
# Mot de passe du compte AD
define("LDAP_SERVER_PASSWORD","M0n#P45-sW0rDSuQ3Rc0pl!qu3");
# OU recherche comptes utilisateurs
define("LDAP_DN","OU=FIGEAC,DC=ncad,DC=fr");
# FONCTION ldap_update_attribute
# ------------------------------
function ldap_update_attribute($user, $attribute_name, $value) {
error_reporting(0);
$ldap_connection = ldap_connect(LDAP_SERVER_NAME);
ldap_set_option($ldap_connection, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ldap_connection, LDAP_OPT_REFERRALS, 0); // We need this for doing an LDAP search.
ldap_bind($ldap_connection,LDAP_SERVER_LOGIN."@".LDAP_DOMAIN,LDAP_SERVER_PASSWORD);
$user_search = ldap_search($ldap_connection,LDAP_DN,"(&(sAMAccountName=$user))");
$user_get = ldap_get_entries($ldap_connection, $user_search);
$user_entry = ldap_first_entry($ldap_connection, $user_search);
$user_dn = ldap_get_dn($ldap_connection, $user_entry);
if (!$user_get) {
return 404;
}
$attribute[$attribute_name] = array($value);
$replace=ldap_mod_replace($ldap_connection, $user_dn, $attribute);
$message[]=$user_dn;
ldap_close($ldap_connection);
}
?>