Authentification LDAP + groupes sur Wifi
This commit is contained in:
parent
f2a9680f89
commit
7310f8d976
28
admin/authentification_ldap.php
Normal file
28
admin/authentification_ldap.php
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
// Formulaire d'authentification LDAP
|
||||||
|
include_once('winlog_admin_conf.php');
|
||||||
|
// on sort immédiatement si login.php est appelé sans les paramètres attendus
|
||||||
|
if ($auth_mode !="LDAP") {
|
||||||
|
header('Location: interdit.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
include_once('ldap_conf.php');
|
||||||
|
?>
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<title>Winlog</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p class="header">WINLOG</p>
|
||||||
|
<p style="text-align: center"><?php echo($auth_ldap_message); ?>
|
||||||
|
<form id="login" name="login" action="login_ldap.php" method="POST">
|
||||||
|
<div class="login"><label for="username">Compte : </label><input type="text" id⁼"username" name="username" /></div>
|
||||||
|
<div class = "login"><label for="password">Mot de passe : </label><input type="password" id="password" name="password" /></div>
|
||||||
|
<button type="submit" class ="bouton_valide">Valider</button>
|
||||||
|
</form>
|
||||||
|
<p class="footer">version <?php echo($winlog_version); ?></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
13
admin/ldap_conf.example.php
Normal file
13
admin/ldap_conf.example.php
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<?php
|
||||||
|
// configuration de l'authentificition LDAP
|
||||||
|
// Attention : si connexion en ldaps, vérifier la présence du certificat du serveur LDAP
|
||||||
|
// ou forcer la non vérification du certificat : TLS_REQCERT never dans /etc/ldap/ldap.conf
|
||||||
|
$auth_ldap_server = "ldaps://ip_serveur_ldap"; // IP ou nom d'hôte du serveur LDAP
|
||||||
|
$auth_ldap_user = "CN=reader,CN=Users,DC=iut,DC=local"; // DN d'un compte autorisé en lecture sur l'annuaire
|
||||||
|
$auth_ldap_pass = "Maude Passe"; // mot de passe de ce compte
|
||||||
|
$auth_ldap_basedn = "DC=iut,DC=local"; // DN : base de recherche des comptes
|
||||||
|
$auth_ldap_port = "636"; // port du serveur : 636 (ldaps) recommandé
|
||||||
|
$auth_ldap_attribut_identifier = "sAMAccountName"; // attribut identifiant d'un compte dans l'annuaire
|
||||||
|
$auth_ldap_AD = true; // le serveur LDAP est-il un serveur AD ?
|
||||||
|
$auth_ldap_message = "Veuillez vous authentifier avec votre compte et votre mode passe Windows"; // message sur le formulaire d'authentification LDAP
|
||||||
|
?>
|
64
admin/login_ldap.php
Normal file
64
admin/login_ldap.php
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?php
|
||||||
|
// Formulaire d'authentification LDAP
|
||||||
|
include_once('winlog_admin_conf.php');
|
||||||
|
// on sort immédiatement si login_ldap.php est appelé hors du auth_mode LDAP
|
||||||
|
if ($auth_mode !="LDAP") {
|
||||||
|
header('Location: interdit.php');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
$username = $_POST['username'];
|
||||||
|
$password = $_POST['password'];
|
||||||
|
|
||||||
|
include_once('ldap_conf.php');
|
||||||
|
// Connexion au serveur LDAP
|
||||||
|
$ldapconn = ldap_connect($auth_ldap_server, $auth_ldap_port) or die("Connexion au serveur LDAP impossible.");
|
||||||
|
if ($auth_ldap_AD) {
|
||||||
|
ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); // option nécessaire pour une recherche depuis la racine du domaine
|
||||||
|
ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); // option nécessaire pour une recherche sur AD
|
||||||
|
}
|
||||||
|
if($ldapconn) {
|
||||||
|
// authentification avec le compte $auth_ldapuser
|
||||||
|
$ldapbind = ldap_bind($ldapconn, $auth_ldap_user, $auth_ldap_pass) or die ("Erreur LDAP sur bind initial: ".ldap_error($ldapconn));
|
||||||
|
if ($ldapbind) {
|
||||||
|
$s2 = false;
|
||||||
|
$dn = false;
|
||||||
|
$srl = false;
|
||||||
|
$entry = false;
|
||||||
|
// recherche du DN de l'utilisateur $username dans l'annuaire
|
||||||
|
$filtre = "($auth_ldap_attribut_identifier=$username)";
|
||||||
|
$srl = ldap_search($ldapconn , $auth_ldap_basedn , $filtre, ["dn"]);
|
||||||
|
if ($srl) {
|
||||||
|
$entry = ldap_first_entry($ldapconn , $srl);
|
||||||
|
if ($entry) {
|
||||||
|
$dn = ldap_get_dn($ldapconn , $entry);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// tentative d'authentification de l'utilisateur $username sur l'annuaire
|
||||||
|
if ($dn) {
|
||||||
|
$s2 = ldap_bind($ldapconn, $dn, $password);
|
||||||
|
}
|
||||||
|
if (($s2) && ($password != "") && ($dn != ""))
|
||||||
|
{
|
||||||
|
session_start();
|
||||||
|
$_SESSION['username'] = $username;
|
||||||
|
header('Location: '.$winlog_url);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<!DOCTYPE HTML>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<title>Winlog</title>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<link rel="stylesheet" media="screen" type="text/css" title="default" href="default.css">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p class="header">WINLOG</p>
|
||||||
|
<p>Compte ou mot de passe inconnu</p>
|
||||||
|
<br/><br/><a href="index.php"><i>Menu principal</i></a>
|
||||||
|
<p class="footer">version <?php echo($winlog_version); ?></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
x
Reference in New Issue
Block a user