PHP - LDAP l Usergruppen auslesen, vergleichen, zulassen
Hallo alle zusammen!
Ich habe mal wieder ein Problem mit meinem PHP Script..
Vielleicht kann mir wer helfen. Ich bin dabei mein PHP Seite über eine LDAP-Anmeldung abzusichern. Derzeit stehen die User einzeln in der Datenbank (20) und im AD (Windows Server 2008 R2) sind über 2000 User. Das wird mir dann zu viel Arbeit das einzeln zu pflegen und außerdem will sich nicht jeder mehrere Passwörter merken.
Die Verbindung zum Server klappt einwandfrei! Ich habe schon vieles gelesen und probiert, wie ich nun testen kann ob der eingegebene Username zum Passwort im AD übereinstimmt und zusätzlich in einer Gruppe ist! Denn pro Gruppe sollen in Zukunft andere Inhalte angezeigt werden.
ACHTUNG: Wie schon in 2 Beiträgen zuvor angemerkt, es wird immer noch nicht gegen SQL-Injections gesichert! Kommt aber vor Online-Schaltung.
Hier der Code der Anmeldeseite:
Der Code von "ldap.php":
Der Code von "config.php":
Dann soll auf die Seite "protokoll.php" weitergeleitet werden. Auf allen Unterseiten soll nun gecheckt werden ob der User 1. eingeloggt ist und 2. ob er die nötige Gruppe hat zum Anzeigen. Das kann man ja per Variable lösen, die in der Session weitergeschickt wird.
Ich hoffe ihr könnte mir weiterhelfen...Meine Logik ist derzeit am Ende!
Webserver: IIS auf Windows Server 2012 R2
Gruß
Thoomaas
Ich habe mal wieder ein Problem mit meinem PHP Script..
Vielleicht kann mir wer helfen. Ich bin dabei mein PHP Seite über eine LDAP-Anmeldung abzusichern. Derzeit stehen die User einzeln in der Datenbank (20) und im AD (Windows Server 2008 R2) sind über 2000 User. Das wird mir dann zu viel Arbeit das einzeln zu pflegen und außerdem will sich nicht jeder mehrere Passwörter merken.
Die Verbindung zum Server klappt einwandfrei! Ich habe schon vieles gelesen und probiert, wie ich nun testen kann ob der eingegebene Username zum Passwort im AD übereinstimmt und zusätzlich in einer Gruppe ist! Denn pro Gruppe sollen in Zukunft andere Inhalte angezeigt werden.
ACHTUNG: Wie schon in 2 Beiträgen zuvor angemerkt, es wird immer noch nicht gegen SQL-Injections gesichert! Kommt aber vor Online-Schaltung.
Hier der Code der Anmeldeseite:
<?php
session_start();
include ('config.php');
include ('ldap.php');
?>
<html>
<head>
<title>Protokol | Portal -- Login</title>
</head>
<body>
<div id="navigation2">
<div class="logo-login"><img src="img/logo_small.png"></div>
</div>
<?php
include("authenticate.php");
// check to see if user is logging out
if(isset($_GET['out'])) {
// destroy session
session_unset();
$_SESSION = array();
unset($_SESSION['user'],$_SESSION['access']);
session_destroy();
}
// check to see if login form has been submitted
if(isset($_POST['userLogin'])){
// run information through authenticator
if(authenticate($_POST['userLogin'],$_POST['userPassword']))
{
// authentication passed
header("Location: protokoll.php");
die();
} else {
// authentication failed
$error = 1;
}
}
/*
$username = $_POST["username"];
$passwort = md5($_POST["password"]);
$abfrage = "SELECT username, passwort FROM login WHERE username LIKE '$username' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);
if($row->passwort == $passwort) {
$_SESSION["username"] = $username;
echo "<p><div class='login'>Login als ".$_SESSION["username"]." erfolgreich. <br> Sie werden <a href=\'".$referrer."protokoll.php\'>weitergeleitet</a>.</div>";
echo "<meta http-equiv='refresh' content='0; url=protokoll.php'>";
}else{
echo "Bitte Username und Passwort richtig eingeben!";
}*/
?>
<div id="content">
<div class="card">
<div class="login">
<form action="index.php" method="post">
Username<br>
<input type="text" id="eingabe" size="24" maxlength="50" name="userLogin"><br><br>
Passwort<br>
<input type="password" id="eingabe" size="24" maxlength="50" name="userPassword"><br>
<p>
<input type="submit" class="button" name="send" value="Login">
<p>
</form>
</div>
</div>
</div>
<?php
include('footer.php');
?>
<!--
<div id="footer">
© by HannIT
</div>
-->
</body>
</html>
Der Code von "ldap.php":
<?php
#LDAP VARIABLEN
$ldap_host = "ldap://subdomain.domain.de";
$ldap_port = "389";
$domain = "subdomain.domain.de";
$base_dn = "OU=Gruppen,OU=HannIT,DC=subdomain,DC=domain,DC=de";
$ldap_user = "xyz";
$ldap_pw = "xyz";
$usr_dmn = $ldap_user."@".$domain;
$ad_con = ldap_connect($ldap_host) or die("Couldn't connect to AD!");
#LDAP OPTIONEN
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
#LDAP VERBINDUNG
@ldap_bind($ad_con, $usr_dmn, $ldap_pw) or die("Couldn't connect to AD!");
#LDAP GRUPPEN
$Team1 = "";
$Team2 = "";
$Team3 = "";
$Team4 = "";
$Team5 = "";
$Team...= "";
... (to be continued)
?>
Der Code von "config.php":
<?php
# SETTINGS
error_reporting(1);
# DATENBANKVERBINDUNG AUFBAUEN
$_SESSION["username"] = $username;
$servername = "localhost";
$username = "xyz";
$password = "xyz";
$dbname = "xyz";
$link = mysql_connect($servername, $username, $password);
mysql_connect($servername, $username, $password) or die ("Verbindung fehlgeschlagen!");
mysql_select_db ($dbname);
mysql_query("SET NAMES 'utf8'");
#LOGOUT FUNKTION
/*$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
$logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}
if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
$_SESSION['MM_Username'] = NULL;
$_SESSION['MM_UserGroup'] = NULL;
$_SESSION['PrevUrl'] = NULL;
unset($_SESSION['MM_Username']);
unset($_SESSION['MM_UserGroup']);
unset($_SESSION['PrevUrl']);
$logoutGoTo = "index.php";
if ($logoutGoTo) {
header("Location: $logoutGoTo");
exit;
}
}*/
#DATEIEN EINBINDEN
echo "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
echo "<link rel='stylesheet' href='style.css'/>";
#echo "<link rel='stylesheet' href='css/style-headkorr.css' media='only screen and (max-device-width:1199px)''>";
#echo "<link rel='stylesheet' href='css/tablet.css' media='only screen and (max-device-width:999px)'>";
#echo "<link rel='stylesheet' href='css/phone.css' media='only screen and (max-device-width:767px)'>";
echo "<script type='text/javascript' src='plugins/ckeditor/ckeditor.js'></script>";
echo "<script src='http://code.jquery.com/jquery-1.9.1.min.js'></script>";
echo "<script src='http://code.jquery.com/ui/1.10.3/jquery-ui.js'></script>";
echo "<script src='plugins/hamburger/hamburger.js'></script>";
# ALLGEMEINE VARIABLEN
$searchrows = "rows='1'";
?>
Dann soll auf die Seite "protokoll.php" weitergeleitet werden. Auf allen Unterseiten soll nun gecheckt werden ob der User 1. eingeloggt ist und 2. ob er die nötige Gruppe hat zum Anzeigen. Das kann man ja per Variable lösen, die in der Session weitergeschickt wird.
Ich hoffe ihr könnte mir weiterhelfen...Meine Logik ist derzeit am Ende!
Webserver: IIS auf Windows Server 2012 R2
Gruß
Thoomaas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 284451
Url: https://administrator.de/contentid/284451
Ausgedruckt am: 16.11.2024 um 19:11 Uhr
4 Kommentare
Neuester Kommentar
Hi,
das hier müsste eigentlich das sein was du suchst:
https://www.tutorials.de/threads/ldap-benutzergruppenabfrage.336506/
LG Larmina
das hier müsste eigentlich das sein was du suchst:
https://www.tutorials.de/threads/ldap-benutzergruppenabfrage.336506/
LG Larmina