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