我必须将Active Directory用户与服务器绑定。我可以成功连接到服务器,但不知何故不能绑定用户。我不知道是什么原因。
以下是我的PHP源代码:$basedn="dc=domain,dc=com";
echo "Connecting ...<br/>";
$ds=ldap_connect("192.XXX.XXX.XX"); // must be a valid LDAP server!
echo "connect result is ".$ds."<br/>";
if($ds){
ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
$lb=ldap_bind($ds,"cn=xyz,o=domain.com","password");
if ($lb) {
echo "LDAP bind successful...";
} else {
echo "LDAP-Errno: " . ldap_errno($ds) . "<br />";
echo "LDAP-Error: " . ldap_error($ds) . "<br />";
}
ldap_close($ds);
}
你能告诉我在ldap_bind
函数中传递username参数的具体内容吗?请提供我任何源代码,帮助我这样做吗?
我在一个运行Server 2008 R2的域控制器上,该域最初是2003年的,必须使用login@domain格式。我验证了DN是正确的,2008年以前的域管理帐户可以使用DN连接。但是,非管理员不能,除非使用login@domain格式。
现在,我的代码尝试:
美元磅= ldap_bind (ds,美元"cn =登录,o = domain.com","密码");
如果没有找到,则尝试:
美元磅= ldap_bind (ds,美元"login@domain.com","密码");
这是我对DN不工作的原因进行故障排除时的快速修复。我建议即使您使用的是2008年的格式,也要尝试2003年的格式。
在Windows Server 2003上使用Active Directory,而不是:
$lb = ldap_bind($ds, "cn=login,o=domain.com", "password");
我不得不使用:
$lb = ldap_bind($ds, "login@domain.com", "password");
然而,你的错误信息(不能联系LDAP服务器)看起来像你没有提供给ldap_connect()
一个服务器地址可达通过你的PHP脚本(检查Windows防火墙等)