【发布时间】:2018-07-15 12:56:35
【问题描述】:
我在 html/php 1.6 中制作了一个简单的登录表单,以针对我的活动目录 2012r2 进行身份验证,当我尝试登录时,有时我在 php 中执行 ldap_search 时出现此错误:(不更改代码或配置)
000004DC: LdapErr: DSID-0C0907C2,注释:为了执行此操作,必须在连接上完成成功的绑定。,数据 0,v2580**
错误说我必须通过身份验证才能执行 ldap 搜索,但用户和密码都很好。
这里是代码:
$srv="ldaps://server.domain";
$port=636;
$ldap=ldap_connect($srv,$port)
ldap_set_option($ldap,LDAP_OPT_PROTOCOL_VERSION,3);
ldap_set_option($con, LDAP_OPT_REFERRALS, 0);
ldap_bind($ldap,"DOMAIN\adminsuer",$password)
$mesg1=ldap_search($basedn,"(&(objectCategory=person)(sAMAccountName=$username))",array('sAMAccountName', 'cn', 'sn', 'givenName', 'pwdLastSet', 'userAccountControl', 'pager', 'employeeNumber'));
问题出在哪里?
----编辑----
很久以后我才回来面对这个问题。正如 php.net 网站所说,我也尝试过,但没有什么好处。我的问题是 ldap 上的绑定有效,但是当我在活动目录上进行搜索时,这将返回上面指定的错误。这个问题很少发生,并在发生一段时间后消失(大约接下来的 5->30 分钟)
....
ldap_set_option($ldap,LDAP_OPT_REFERRALS,0);
$bind=@ldap_bind($ldap,$adminuserdn,$adminpass);
if ($bind) {
logga2("bind admin OK");
$mesg1=ldap_search($ldap,$basedn,"(&(objectCategory=person)(sAMAccountName=$username))",array('sAMAccountName', 'cn', 'sn', 'givenName', 'pwdLastSet', 'userAccountControl', 'pager', 'employeeNumber'));
if ($mesg1) {
....
}
....
}
....
questo questiona lo verifico anche con script perl e con un programma per windows che si chiama ldapadmin (http://www.ldapadmin.org/) opportunamente configurato per collegarsi agli ldap dei vari domain controller.
【问题讨论】:
标签: php active-directory ldap