2015-12-08 1 views
0

Informations généralesAD en utilisant l'interrogation ldap/php

J'essaie de comprendre comment interroger notre serveur d'annuaire actif pour des informations sur les utilisateurs/groupes via une application web php. En fin de compte, je vais utiliser cette information pour essayer de "voir" quels champs/données sont disponibles dans AD pour vérifier/utiliser dans le cadre de l'authentification, en plus du nom d'utilisateur et du mot de passe. par exemple, je veux seulement permettre aux gens de groupes AD spécifiques ... etc.

J'utilise cela comme un exemple: http://php.net/manual/en/ldap.examples-basic.php

problème

Malheureusement, je reçois aucun résultat ... même lorsque j'utilise mon nom d'utilisateur AD comme filtre

t mes résultats ressembler à:

Connecting ...connect result is Resource id #26 
Binding ...Bind result is 1 
Searching for (sn=myusername*) ...Search result is Resource id #27 

Getting entries ... 
Data for 0 items returned: 

Ce que j'ai essayé jusqu'à présent:

Nous avons une autre application web qui est en cours d'exécution sur le même serveur Web que l'application widget. Cette autre application est configurée pour qu'apache invite les informations d'identification AD. Je sais que cela fonctionne parce que lorsque j'essaie de m'authentifier sur cette application secondaire, mes informations d'identification AD sont authentifiées et je reçois l'autorisation dont j'ai besoin pour utiliser l'application.

J'ai donc commencé à fouiller dans apache conf et j'ai essayé de m'assurer que mon code PHP utilise les mêmes valeurs.

Le code

Voici le code PHP qui est défaut actuellement:

public function ldap_test() { 
      echo "<h3>LDAP query test</h3>"; 
      echo "Connecting ..."; 
      $ds=ldap_connect("10.11.11.1111"); // must be a valid LDAP server! 
      echo "connect result is " . $ds . "<br />"; 

      if ($ds) { 
       echo "Binding ..."; 
       //$r=ldap_bind($ds); 
$r=ldap_bind($ds,"CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org", "somepasswordvalue"); 
       // read-only access 
       echo "Bind result is " . $r . "<br />"; 
       echo "Searching for (sn=myusername*) ..."; 

       // Search surname entry 
       $sr=ldap_search($ds, "CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org", "somepasswordvalue", "(sAMAccountName=myusername*)"); 
       echo "Search result is " . $sr . "<br />"; 

       echo "Number of entries returned is " . ldap_count_entries($ds, $sr) . "<br />"; 

       echo "Getting entries ...<p>"; 
       $info = ldap_get_entries($ds, $sr); 
       echo "Data for " . $info["count"] . " items returned:<p>"; 

       for ($i=0; $i<$info["count"]; $i++) { 
        echo "dn is: " . $info[$i]["dn"] . "<br />"; 
        echo "first cn entry is: " . $info[$i]["cn"][0] . "<br />"; 
        echo "first email entry is: " . $info[$i]["mail"][0] . "<br /><hr />"; 
       } 
       echo "Closing connection"; 
       ldap_close($ds); 
      } else { 
       echo "<h4>Unable to connect to LDAP server</h4>"; 
      } 
    } 

configuration Apache que je construisais mon code PHP: (fonctionne cette config et me invites correctement pour mes lettres de créance AD et authentifie correctement)

<AuthnProviderAlias ldap ldap-test> 
    AuthLDAPBindDN "CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org" 
    AuthLDAPBindPassword somepasswordvalue 
    AuthLDAPURL "ldap://10.11.11.111/ou=Accounts,dc=td,dc=ab,dc=org?sAMAccountName?sub?(objectClass=*)" 
    AuthLDAPMaxSubGroupDepth 5 
</AuthnProviderAlias> 

C'est la première fois que j'ai essayé de faire l'authentification AD en PHP un Je ne suis pas celui qui gère nos implémentations AD, donc je suis plutôt vert. Si vous avez des suggestions pour moi s'il vous plaît n'hésitez pas.

Merci

Répondre

0

Le problème était que je filtrage par un nom commun. Notez ceci:

AuthLDAPBindDN "CN=testvalue1,OU=Services,OU=Accounts,DC=td,DC=ab,DC=org" 

donc de le réparer, je devais juste supprimer ce du filtre et cela a fonctionné.

AuthLDAPBindDN "OU=Services,OU=Accounts,DC=td,DC=ab,DC=org"