[PHP] inloggen met behulp van LDAP

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • gertjuhh
  • Registratie: April 2004
  • Laatst online: 26-04 09:14
Voor een intranet site is het wenselijk dat de gebruikers in kunnen loggen met hetzelfde account als voor windows.
Dit hoeft (nog) niet automatisch, het belangrijkste is alleen op dit moment dat het met de zelfde gegevens kan.
Hiervoor heb ik het volgende script gemaakt, ik vroeg me alleen af of dit wel veilig genoeg is...
Ik heb nog nooit eerder met LDAP gewerkt en mijn kennis is dus ook niet al te uitgebreid.
PHP:
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
<?php 

$ldap['host'] = 'server'; 
$ldap['port'] = 389; 

function ldap_authenticate($username, $password) { 
  global $ldap; 

  $conn = ldap_connect($ldap['host'],$ldap['port']); 

 if ($conn) {
        if (ldap_bind( $conn, $username, $password) ) { 
            ldap_close($conn);
            return TRUE; 
        } 
  }
  ldap_close($conn);
  return FALSE;  
} 

if (!ldap_authenticate('test@server.local', 'test')) { 
  echo 'Authorization Failed'; 
} else {
    echo 'Welcome';
}

?>


mijn idee hierachter was dat als de gebruiker bestaat in de LDAP server, dat deze dan ook hierop kan inloggen.
Ik heb dit getest open een windows 2000 met IIS, Active Directory en PHP 5.0.5
Dit werkt allemaal goed.

Graag wat hints/tips/adviezen want het zal vast wel beter/veiliger kunnen ik heb alleen geen idee hoe :s

Alvast bedankt voor jullie hulp

edit voor php highlighting

[ Voor 13% gewijzigd door gertjuhh op 24-10-2005 15:21 ]


Acties:
  • 0 Henk 'm!

Verwijderd

ldap over ssl, poort 636

Acties:
  • 0 Henk 'm!

  • brokenp
  • Registratie: December 2001
  • Laatst online: 10:20
Ik geloof dat je ook moet checken of het password niet leeg is (of doe je dit al ergens anders?). De meeste implementaties van LDAP gaan bij een leeg password uit van anonymous access, en dus zou je zonder wachtwoord met de huidige implementatie ook correct inloggen

Acties:
  • 0 Henk 'm!

  • ShadowLord
  • Registratie: Juli 2000
  • Laatst online: 18-09 22:12
Zelf draai ik ook een login systeem dat gebruik maakt van een LDAP interface. Ik zou als toevoeging ook nog even de gebruikersgegevens via LDAP op te halen (dus even een search doen op de username). Dan weet je 100% zeker dat ze in het systeem zitten.

You see things; and you say, "Why?" But I dream things that never were; and I say, "Why not?"


Acties:
  • 0 Henk 'm!

  • gertjuhh
  • Registratie: April 2004
  • Laatst online: 26-04 09:14
bedankt voor de info / tips!!

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 09:55

Bosmonster

*zucht*

Je kunt zelfs als je de webserver/ldap aan elkaar koppelt de username automatisch meekrijgen van de ingelogde gebruiker (via $_SERVER).

Scheelt een tweede keer inloggen.

Acties:
  • 0 Henk 'm!

  • gertjuhh
  • Registratie: April 2004
  • Laatst online: 26-04 09:14
Ik ben de hele dag al aan het stoeien om de ingelogde user te voorschijn te toveren, maar het wil me echt niet lukken.
Heb je hier nog tips voor Bosmonster? Of iemand anders, mag ook natuurlijk ;)

Wederom bedankt voor alle hulp!

Acties:
  • 0 Henk 'm!

Verwijderd

Wat zijn de instellingen van je browser? Zie m.n. het "verificatie van gebruiker" gedeelte bij IE => Extra => Opties => Beveiliging => De zone waar je site in zit => Aangepast niveau

Acties:
  • 0 Henk 'm!

  • gertjuhh
  • Registratie: April 2004
  • Laatst online: 26-04 09:14
Heel erg bedankt allen!

Het zat in de instelling van IIS, die stond op anonymous login.
Dit veranderd naar intergrated windows login en nu krijgen we de user mee met $_SERVER['REMOTE_USER'] voor het geval iemand het nog moet weten ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Perfect, dit werkt inderdaad met IIS, maar hoe kunnen we dit doen binnen een WAMP-configuratie? Ik zou dit graag willen koppelen aan de LDAP van de PDC (2003), maar dit is me tot nu toe nog steeds niet gelukt: er komt domweg geen antwoord, ook geen fout. Ik ben daarom al tevreden met het uitlezen van de op het werkstation ingelogde gebruiker. Heel erg tevreden zelfs.

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Verwijderd schreef op vrijdag 28 oktober 2005 @ 01:20:
Perfect, dit werkt inderdaad met IIS, maar hoe kunnen we dit doen binnen een WAMP-configuratie? Ik zou dit graag willen koppelen aan de LDAP van de PDC (2003), maar dit is me tot nu toe nog steeds niet gelukt: er komt domweg geen antwoord, ook geen fout. Ik ben daarom al tevreden met het uitlezen van de op het werkstation ingelogde gebruiker. Heel erg tevreden zelfs.
Apache ondersteund standaard geen NTLM authenticatie. Nu is er wel een module voor, namelijk mod_ntml, alleen deze schijnt niet echt goed te werken. Heb zelf pas ook met LDAP lopen kloten (LDAP met Samba koppeling en moest ook gekoppeld worden aan PHP site (ook automatisch)), we kwamen tot conclusie dat het niet ging werken. Nu ben ik er zelf niet verder mee gegaan, maar heb toen die mod_ntml gevonden en getipt aan iemand die er verder mee ging en die kwam tot conclusie dat het niet ging werken. Mischien dat jij het voor elkaar kunt krijgen, ik weet het niet, maar het is te proberen.

Acties:
  • 0 Henk 'm!

Verwijderd

Het probleem is eigenlijk dat er massa's voorbeelden te vinden zijn van scripts die inderdaad een koppeling maken met de LDAP-server/PDC, authentificatie uitvoeren en allerlei fantastische zoekqueries kunnen uitvoeren, maar dat heb ik eigenlijk niet nodig. Ik hoef alleen maar te zien wie er is ingelogd op het werkstation en ik krijg steeds te horen/lezen dat je dit perfect met LDAP kunt.
Maar ik ga zeker even kijken naar jouw advies. Bedankt daarvoor.

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Verwijderd schreef op zaterdag 29 oktober 2005 @ 04:04:
Het probleem is eigenlijk dat er massa's voorbeelden te vinden zijn van scripts die inderdaad een koppeling maken met de LDAP-server/PDC, authentificatie uitvoeren en allerlei fantastische zoekqueries kunnen uitvoeren, maar dat heb ik eigenlijk niet nodig. Ik hoef alleen maar te zien wie er is ingelogd op het werkstation en ik krijg steeds te horen/lezen dat je dit perfect met LDAP kunt.
Maar ik ga zeker even kijken naar jouw advies. Bedankt daarvoor.
NTML is ook de authenticatie van werkstation (client) naar je server. Met deze module kun je dus zien wie er is ingelogd op de werkstation.

Acties:
  • 0 Henk 'm!

Verwijderd

gertjuhh schreef op maandag 24 oktober 2005 @ 15:13:

mijn idee hierachter was dat als de gebruiker bestaat in de LDAP server, dat deze dan ook hierop kan inloggen.
Ik heb dit getest open een windows 2000 met IIS, Active Directory en PHP 5.0.5
Dit werkt allemaal goed.

Graag wat hints/tips/adviezen want het zal vast wel beter/veiliger kunnen ik heb alleen geen idee hoe :s
Een gebruiker kan zelfs meerdere keren voorkomen in de LDAP-structuur als ik me niet vergis. En welke heb je dan nodig?
Volgens mij moet je ook nog een root-path opgeven waar de user gezocht moet worden...

Acties:
  • 0 Henk 'm!

  • eghie
  • Registratie: Februari 2002
  • Niet online

eghie

Spoken words!

Verwijderd schreef op zaterdag 29 oktober 2005 @ 16:02:
[...]

Een gebruiker kan zelfs meerdere keren voorkomen in de LDAP-structuur als ik me niet vergis. En welke heb je dan nodig?
Volgens mij moet je ook nog een root-path opgeven waar de user gezocht moet worden...
Dat klopt. LDAP is eigenlijk gewoon een database. Dit is meer een database met objecten erin, dus geen relationele database. De objecten kunnen een aantal eigenschappen hebben. Deze type eigenschappen krijgen ze van een schema, dus het zijn geen vrije velden ofzo. Voor samba heb je bijvoorbeeld: user.SmbNTpasswd en user.SmbLMpasswd. Dit zit allemaal aan dat ene user object vast. Zo kun je dus dezelfde gebruiker met het zelfde wachtwoord aan verschillende applicaties en services koppelen. Alleen om deze objecten te benaderen heb je een path nodig (ben even de naam kwijt van het path). Dat path ziet er ongeveer zo uit: dc=userdb,dn=tweakers,dn=net. Ik weet het niet meer precies, maar dat komt nog wel. Ik hoop dat dit wat duidelijkheid heeft gebracht.
Pagina: 1