LDAP de php informations d'identification non valides
Mon code est:
$user = 'test';
$password = 'testpass';
$host = '10.1.1.1';
$port = 389;
$basedn = 'dc=ci,dc=mycompany,dc=com';
$group = 'Users';
$ldaprdn = 'uid=test,dc=ci,dc=mycompany,dc=com';
$ad = ldap_connect("ldap://$host", $port);
if ($ad) {
echo "Connected" . "<br/>";
} else {
echo ldap_error($ad) . "<br/>";
}
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
// $ldapBind = ldap_bind($ad, "{$user}@{$domain}", $password); //1.
// $ldapBind = ldap_bind($ad, $user, $password); //2.
$ldapBind = ldap_bind($ad, $ldaprdn, $password); //3.
// $ldapBind = ldap_bind($ad, null, null); //4.
if ($ldapBind) {
echo "Binded" . "<br/>";
} else {
echo ldap_error($ad) . "<br/>";
}
Maintenant, j'utilise la ligne de commentaire "3", bénéficiez:
Connected
Invalid credentials
Si l'utilisation de la ligne de commentaire "1" ou "2", bénéficiez:
Connected
Invalid DN syntax
Si l'utilisation de la ligne de commentaire "4" (c'est anonymouse), bénéficiez de:
Connected
Binded
C'est un développement sous Ubuntu 12.
Pourquoi je reçois des informations d'identification non valides erreur de commenter la ligne "3"? Comment lier avec l'authentification correctement?
Merci à l'avance!
- Mon environnement est Ubuntu 12
Vous devez vous connecter pour publier un commentaire.
La
ldap_bind
fonction semble exiger une DN, pas un RDN, peu importe ce que le doc a dit. Si c'est le cas, alors:{$user}@{$domain}
n'est pas correctement formaté DN, donc:Invalid DN syntax
test
n'est pas correctement formaté DN, donc:Invalid DN syntax
Pour plus d'informations sur la représentation de chaîne de la mise en forme de DN, voir RFC4514
vérifier connues avec le bon outil
Aussi loin que je peux dire, le Nombre 3 est le seul bon des quatre qui sont fournis. Le Serveur d'Annuaire a indiqué dans la liaison de la réponse qu'il a été incapable de vérifier que le mot de passe fourni
testpass
appariés le mot de passe est stocké dans sa base de données. Dans ce cas, je vous recommandons de vérifier le mot de passe en utilisant un outil commeldapsearch
.Ce
ldapsearch
se Lie à l'annuaire comme 'uid=test,dc=ic,dc=mycompany,dc=com' à l'aide d'un mot de passetestpass
et récupère le DN de lauid=test
entrée. Si cela ne fonctionne pas avec des "informations d'identification non valides" erreur, puis il y a ces possibilités:testpass
n'est pas le bon mot de passeuid=test
entrée n'existe pas. Le point ci-dessus explique cette "informations d'identification non valides". Il est inutile de dire à un attaquant qu'une entrée n'existe pas à fournir de l'attaquant avec des informations supplémentaires (il a un moins de DN pour essayer).jargon et LDAP-parler
Dans l'intérêt d'utiliser le bon jargon:
$ldaprdn
n'est pas un RDN, c'est un DN. Rdn sont des composants de DNsvoir aussi
J'ai trouver le problème, le $ldaprdn = 'uid=test,dc=ic,dc=mycompany,dc=com' n'est pas le même que sur le serveur LDAP, après le changement, il fonctionne bien.
@Annamalai.Somasundaram,
DN doit être passé quelque chose comme cn=test,ou=Utilisateurs,dc=ic,dc=mycompany,dc=com
l'orthographe correcte peut être trouvé sur le serveur LDAP