Active Directory Login

Door Marijn , 20 jaar geleden, 3.262.474x bekeken

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

PHP script bestanden

  1. active-directory-login

 

Er zijn 9 reacties op 'Active directory login'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Marien xD
Marien xD
20 jaar geleden
 
0 +1 -0 -1
Geweldig! Bedankt, bevorderd het gebruik van 1 account weer!
Jelmer -
Jelmer -
20 jaar geleden
 
0 +1 -0 -1
Kan je voor $ingroep niet beter gewoon boolean true/false gebruiken?


20 jaar geleden
 
0 +1 -0 -1
Supper zo'n script had ik nodig :)
Jarik
Jarik
20 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
20 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
19 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 -
Jelmer -
19 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
19 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. :)
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Jurgen assaasas
Jurgen assaasas
19 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.

Inhoudsopgave

  1. active-directory-login

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.