Versio

Active Directory Login

Voor mijn werk moest ik een loginscript maken op basis van Active Directory. Elke gebruiker in Active Directory die in een bepaalde usergroep staat kan inloggen. Ik heb dit script nergens op internet kunnen vinden, vandaar dat ik hem hier post. Ik weet zeker dat andere mensen het ook kunnen gebruiken...

Gesponsorde koppelingen

BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  

PHP script bestanden

  1. active-directory-login

 

9 reacties op 'Active Directory Login'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Marien xD
Marien xD
6 jaar geleden
 
0 +1 -0 -1
Geweldig! Bedankt, bevorderd het gebruik van 1 account weer!
Jelmer rrrr
Jelmer rrrr
6 jaar geleden
 
0 +1 -0 -1
Kan je voor $ingroep niet beter gewoon boolean true/false gebruiken?
Aka
aka
6 jaar geleden
 
0 +1 -0 -1
Supper zo'n script had ik nodig :)
Jarik
Jarik
6 jaar geleden
 
0 +1 -0 -1
Misschien is het handig voor de AD leken onder ons om de afkortingen wat uit te leggen? Dus hoe je bijvoorbeeld $usergroep moet vullen als je groepje weer onder wat andere submapjes staan.... Ik zelf kom er namelijk ook niet helemaal uit ;)

Maar voor de rest een leuk script... Kan er wel wat mee denk ik
Marijn
Marijn
6 jaar geleden
 
0 +1 -0 -1
Mensen die met Active Directory werken weten wel hoe zo'n string in elkaar zit. Het is een map structuur (daar komt het woord "Directory" vandaan).

CN = Common Name (naam van persoon/usergroep)
OU = Organizational Unit ((sub)map)
DC = Domain Controller (naam van domein)

Er zijn ook verschillende tools om zo'n string direct te zien. Google naar baseDN en je vind het wel....
Wim Smit
Wim Smit
5 jaar geleden
 
0 +1 -0 -1
Ik ben even gaan spelen met dit script. Het lijkt te werken op het moment dat de username in de AD voorkomt. Gebruik je echter een username die niet in de AD voorkomt dan doet het script niets, terwijl je dan ook op de "Uw gebruikersnaam of wachtwoord is incorrect..." melding zou moeten uitkomen.
(Met bijv. een bestaande username en een fout wachtwoord kom je wel op die melding).
Jelmer rrrr
Jelmer rrrr
5 jaar geleden
 
0 +1 -0 -1
Wim, zet eens het volgende in je script:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
?>

Misschien komt er dan een foutmelding naar boven.
Wim Smit
Wim Smit
5 jaar geleden
 
0 +1 -0 -1
Helaas geen extra foutmeldingen. Volgens mij zit het probleem in onderstaande code:

$sr= ldap_search($ds, $usergroep, "CN=*");
$info = ldap_get_entries($ds, $sr);

for ($i=0; $i<$info["count"]; $i++) {
for ($b=0; $b<count($info[0]["member"])-1; $b++) {
$zoek = $info[0]["member"][$b];
$nr=ldap_search($ds, $zoek, "CN=*");
$ninfo = ldap_get_entries($ds, $nr);
$userstring = $ninfo[0][userprincipalname][0];
list($loginnaam, $achterstuk) = split('[@]', $userstring);
$ingroep = ((strtolower($username) == strtolower($loginnaam)) ? 1 : 0);
switch($ingroep){
case 0: echo "Geen lid"; break;
case 1: echo "Wel lid"; break;
}
}
}


Als ik dit achterwege laat, en het hierbij laat:
if ($r) {\\Goed ingelogd.} else {\\Fout ingelogd.}
dan gaat het wel goed. (Net even snel getest).

Wat mij wel is opgevallen met een var_dump(info[0]) is dat [member] niet bestaat en wel bijv. een memberof.

Het gaat mij puur om de validatie, en ik moet het nog even verder uittesten, maar het lijkt erop dat met het weglaten van de for loops het script voor mij goed genoeg werkt.

In ieder geval bedankt voor je reaktie Jelmer.
Andere nuttige suggesties zijn altijd welkom. :)
Jurgen assaasas
Jurgen assaasas
5 jaar geleden
 
0 +1 -0 -1
@jarik
Wie een beetje verstand heeft van het LDAP (Lightweigh Directoryt Access Protocol) en van PHP snapt dit wel. Even googlen op LDAP is dan ook best een logische stap als je dit niet snapt.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Details
  • Marijn
    Door:
    Marijn
  • 6 jaar geleden
  • 2.878 x bekeken
  • Labels
  • Geen tags toegevoegd.
Get Adobe Flash player