1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
<?php
//Gestion des données en sessions
session_start();
//L'adresse du serveur LDAP
$ldap_server = "******";
//Identifiant LDAP pour parcourir (lecture seule)
$auth_user = "*****";
$auth_pass = "*******";
//Vérification contenu de login et password si ok : mise en SESSION
if($_POST["login"] !="" && $_POST["password"] != ""){
$_SESSION["login"] = $_POST["login"];
$_SESSION["password"] = $_POST["password"];
}
else {header("location:index.php?erreur=badpassword");
exit; //Redirection à la page de login / Possibilité de personnaliser les messages d'erreurs
}
//Base DN de ***
$base_dn = "OU=********,DC=*****,DC=****";
//Filtrage qui permet de vérifier si l'utilisateur est bien dans le groupe de l'application (restriction d'accès en fonction des applis)
$filter = "(&(objectCategory=user)(sAMAccountName=".$_SESSION["login"].")(memberOf=CN=*******,OU=****,OU=****,OU=****,DC=****,DC=****))";
//Connexion à la Base LDAP
if(!($connect=@ldap_connect($ldap_server))) die("Could not connect to ldap server");
ldap_set_option($connect, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($connect, LDAP_OPT_REFERRALS, 0);
//Authentification avec les logins LDAP
if(!($bind=@ldap_bind($connect, $auth_user, $auth_pass))) die("Unable to bind to server");
//Recherche si le login existe et qu'il soit bien dans un groupe spécifique à l'application grace au filtre
if (!($search=@ldap_search($connect, $base_dn, $filter))) die("Unable to search ldap server");
//Retourne le nombre d'enregistrement
$info = @ldap_get_entries($connect, $search);
//Si l'utilisateur existe, on redirige sur la 2e page pour authentification avec les logins et password de l'utilisateur
if($info["count"] == 1){ // Vérification du nom
$_SESSION["dn"] = $info[0]["distinguishedname"][0]; //Récupération du DN de l'utilisateur pour Authentification sur la 2e page (OBLIGATOIRE)
if($info[0]["lockoutTime"][0] =='')
header('location:ldap_login.php'); //Redirection sur la 2e page
else header('location:index.php?erreur=session');
}
//Sinon redigier sur la page d'index avec une information comme quoi l'utilisateur n'est pas dans le groupe (contacter l'admin réseau)
else {
if($info["count"] == 0) {
header('location:index.php?erreur=groupe');
exit;
}
else {
header("location:index.php?erreur=session");
exit;
}
}
?> |
Partager