我必须将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
函数中通过用户名参数究竟是什么?请提供任何帮助我这样做的源代码?
任何帮助将不胜感激。
答案 0 :(得分:1)
我所在的域控制器上运行的是Server 2008 R2,该域最初是2003,并且必须使用login @ domain格式。我验证了DN是正确的,2008之前的域管理员帐户可以使用DN进行连接。但是,除非使用了登录@域格式,否则非管理员无法使用。
现在,我的代码尝试:
$ lb = ldap_bind($ ds,“cn = login,o = domain.com”,“password”);
然后如果找不到任何内容,请尝试:
$ lb = ldap_bind($ ds,“login@domain.com”,“密码”);
这是一个快速修复,同时我解决了DN无法正常工作的原因。我建议即使您使用的是2008,也请尝试使用2003格式。
答案 1 :(得分:0)
在Windows Server 2003上使用Active Directory,而不是:
$lb = ldap_bind($ds, "cn=login,o=domain.com", "password");
我不得不使用:
$lb = ldap_bind($ds, "login@domain.com", "password");
但是,您的错误消息(无法联系LDAP服务器)看起来像您没有通过PHP脚本向ldap_connect()
提供服务器地址可访问 (检查Windows防火墙等)