Permalänk
Medlem

ldap_search, PHP Problem

Hej alla!

Jag har ett problem med ldap_search i PHP där jag vill söka efter om en viss användare är med i en viss grupp.

Jag lyckas ansluta till ldap servern, och lyckas binda har även lyckats verifiera användarnamn samt lösenord på en användare men att söka fungerar inte.

Följande kod används:

$ldaphost = "172.16.1.130"; $ldapport = 389; $ldap = ldap_connect($ldaphost, $ldapport); ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0); ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3); $ldapbind = ldap_bind($ldap, $username . "@domännamn", $upasswd);

Men när sökning skall göras får jag bara felmeddelandet jag angett om att det inte går att söka i LDAP:

$ldap_dn="OU=Användare,OU=Administration,DC=*,DC=*,DC=*"; $filter = "(sAMAccountName=" . $username . ")"; $attr = array("memberof"); $result = ldap_search($ldap, $ldap_dn, $filter, $attr) or exit("Unable to search LDAP server");

DC=* är satt med stjärna för att dölja det egentliga domännamnet.

Vad är fel? Har försökt att hitta en lösning på nätet men lyckas inte.

Väl mött,

Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem

Jag kör följande, kanske kan hjälpa?

<?php function authenticate($username, $password){ //Active Directory server $ldap_host = "server.domain.local"; //Active Directory DN $ldap_dn = "OU=Accounts,OU=company,DC=Domain,DC=local"; //Active Directory grupp $ldap_group = "Group"; //Domän (@domain.local) $ldap_domain = "@domain.local"; //Anslut till Active Directory $ldap = ldap_connect($ldap_host); //Verifiera användarnamn och lösenord if($bind = @ldap_bind($ldap, $username . $ldap_domain, $password)){ //Kolla så användaren är med i rätt grupp $filter = "(sAMAccountName=" . $username . ")"; $attribute = array("memberof"); $result = ldap_search($ldap, $ldap_dn, $filter, $attribute) or exit("Unable to search LDAP server"); $entries = ldap_get_entries($ldap, $result); ldap_unbind($ldap); foreach($entries[0]['memberof'] as $groups){ if(strpos($groups, $ldap_group)){ $access = 'true'; break; } } //Om användaren är med i rätt grupp, returnera true, annars returnera false if($access == 'true') { return true; } else { return false; } } else { //Vid fel användarnamn ellerlösenord, returnera false return false; } } ?>

Permalänk
Medlem
Skrivet av HerrNilsson:

Jag kör följande, kanske kan hjälpa?

<?php function authenticate($username, $password){ //Active Directory server $ldap_host = "server.domain.local"; //Active Directory DN $ldap_dn = "OU=Accounts,OU=company,DC=Domain,DC=local"; //Active Directory grupp $ldap_group = "Group"; //Domän (@domain.local) $ldap_domain = "@domain.local"; //Anslut till Active Directory $ldap = ldap_connect($ldap_host); //Verifiera användarnamn och lösenord if($bind = @ldap_bind($ldap, $username . $ldap_domain, $password)){ //Kolla så användaren är med i rätt grupp $filter = "(sAMAccountName=" . $username . ")"; $attribute = array("memberof"); $result = ldap_search($ldap, $ldap_dn, $filter, $attribute) or exit("Unable to search LDAP server"); $entries = ldap_get_entries($ldap, $result); ldap_unbind($ldap); foreach($entries[0]['memberof'] as $groups){ if(strpos($groups, $ldap_group)){ $access = 'true'; break; } } //Om användaren är med i rätt grupp, returnera true, annars returnera false if($access == 'true') { return true; } else { return false; } } else { //Vid fel användarnamn ellerlösenord, returnera false return false; } } ?>

Tack för snabbt svar.

Problemet låg i charset, dvs åäö som inte blev rätt när man skickar via LDAP. ALlt fungerade när man sparade om i UTF-8 i editorn.

Dock fugnerar detta bara i IIS 7. När jag försöker på servern i skarp miljö, vilken är Apache2 på Ubuntu, så blir det smama fel oavsett.

Jag har ändrat i apache2/conf.d/charset till UTF-8 men problemet kvarstår (omstartad server).

Vet inte vad som är fel på Apache2? Eller är det kanske ldap som spökar i Ubuntu?

Väl mött,

Christian

Visa signatur

| ASUS Maximumus V Formula, Intel i7-3770K @ 4.6GHz, Corsair vengance 16Gb @ 1600, ASUS nVidia GTX 970, Samsung EVO 840 256GB SSD, Fractal Design R3 Vitt, Logitech G502 Proteus Core, Ducky YYY | - 10251 Firestrike 3DMark

Permalänk
Medlem
Skrivet av terrax:

Tack för snabbt svar.

Problemet låg i charset, dvs åäö som inte blev rätt när man skickar via LDAP. ALlt fungerade när man sparade om i UTF-8 i editorn.

Dock fugnerar detta bara i IIS 7. När jag försöker på servern i skarp miljö, vilken är Apache2 på Ubuntu, så blir det smama fel oavsett.

Jag har ändrat i apache2/conf.d/charset till UTF-8 men problemet kvarstår (omstartad server).

Vet inte vad som är fel på Apache2? Eller är det kanske ldap som spökar i Ubuntu?

Väl mött,

Christian

utf8_encode() eller utf8_decode() kring input kanske kan hjälpa då kanske?