PHP LDAP连接

JER*_*ERC 7 php ldap active-directory

我正在尝试使用php-ldap连接LDAP.我遇到了一个问题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");
}
Run Code Online (Sandbox Code Playgroud)

我收到这条消息:

警告:ldap_bind():无法绑定到服务器:在...中的凭据无效

但是当我这样尝试时:

ldap_bind($ds,'josue.ruiz@domain.com','pass'); 
Run Code Online (Sandbox Code Playgroud)

它工作正常,但对我来说它不起作用,因为我想过滤OU,并用这种方式我不能.有没有人对这个问题有任何建议?

Ale*_*exC 8

当您尝试这样做时, ldap_bind您只是连接并确定凭据是否有效.您需要做的是将您的域添加到用户名并让它连接.然后,如果你想确定用户是否是'技术'OU,ldap_search() 请考虑这样做:

$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");
}
Run Code Online (Sandbox Code Playgroud)