我正在构建一个从PHP到LDAP的身份验证脚本。我的问题是,如果用户不是我的管理员,我真的不知道如何检查用户。
我真的不明白ldap_bind
- 在这里我只能以管理员用户身份登录,但我可以在我的网站上搜索其他用户,但我不知道如何查看他们的密码。< / p>
到目前为止我所拥有的:
function login($up, $pw){
$ldap = ldap_connect("dejan.local") or die("Could not connect to LDAP server.");
if ($ldap){
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0);
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
//if I try $up and $pw here, I get an error
if ($bind = ldap_bind($ldap, "Admin", "Somepassword")){
$sr = ldap_search($ldap, "ou=testunit,DC=dejan,DC=local", "samaccountname=$up");
$info = ldap_get_entries($ldap, $sr);
//so here I've gotten information from the user $up
//but I would like to check if his password matches and then get his information
}
}
}
我查看了其他人的某种auth脚本,他们通过ldap_bind
检查了这些信息,但我只能与管理员用户联系。
答案 0 :(得分:1)
我相信你需要做的唯一改变是:
if ($bind = ldap_bind($ldap, "$up@dejan.local", $pw)){
这将使请求在特定域的本地。使用Active Directory(有点不同,责怪Kerberos),您必须提供登录的上下文。