11

I'm trying to connect in LDAP with php-ldap. I got a issue using ldap_bind():

$username = 'josue.ruiz';
$password = 'pass';
$ldapconfig['host'] = '10.10.10.11';
$ldapconfig['port'] = 389;
$ldapconfig['basedn'] = 'dc=domain,dc=com';

$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

$dn="cn=".$username.",ou=Technology,".$ldapconfig['basedn'];

if ($bind=ldap_bind($ds, $dn, $password)) {
    echo("Login correct");
} else {
    echo("Login incorrect");
}

I get this message:

Warning: ldap_bind(): Unable to bind to server: Invalid credentials in ...

But when I try this way:

ldap_bind($ds,'[email protected]','pass'); 

It works fine, but to me it doesn't work because I want to filter by OU, and with this way I can't. Does anyone have any advice for this problem?

1
  • 1
    Check out the code for adLDAP - adldap.sourceforge.net - that class interacts in all sorts of ways with Active Directory through PHP. Commented Feb 10, 2012 at 18:49

1 Answer 1

13

When you are trying to do ldap_bind you are only connecting and determining if the credentials validate. What you need to do is add your domain to the username and let it connect. Then if you want to determine if the user is the 'Technology' OU with ldap_search() Consider doing it like this:

$domain = 'mydomain.com';
$username = 'josue.ruiz';
$password = 'pass';
$ldapconfig['host'] = '10.10.10.11';
$ldapconfig['port'] = 389;
$ldapconfig['basedn'] = 'dc=domain,dc=com';

$ds=ldap_connect($ldapconfig['host'], $ldapconfig['port']);
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

$dn="ou=Technology,".$ldapconfig['basedn'];
$bind=ldap_bind($ds, $username .'@' .$domain, $password);
$isITuser = ldap_search($bind,$dn,'(&(objectClass=User)(sAMAccountName=' . $username. '))');
if ($isITuser) {
    echo("Login correct");
} else {
    echo("Login incorrect");
}
Sign up to request clarification or add additional context in comments.

3 Comments

Thanks alex, but when I put $dn="cn=".$username.",ou=Technology,".$ldapconfig['basedn']; it doesnt work, but if I put $dn=$ldapconfig['basedn']; it's work but it doesnt filter the data :'(
Try taking out the CN. You are already filtering with the sAMAccount. Just include the OU and DC path to where you want to check. That should get you what you are looking for. If not, ping me back. I'm going offline now, but I try to follow up on anything I start, so I'll get back sometime soon.
@user1197802, any luck without CN?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.