0

我正在构建一个从 PHP 到 LDAP 的身份验证脚本。我的问题是,如果用户不是我的管理员,我真的不知道如何检查用户。

我不太明白ldap_bind- 在这里我只能以我的管理员用户身份登录,但是我可以在我的 ou 中搜索其他用户,但我不知道如何检查他们的密码。

到目前为止我所拥有的:

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    
        }
    }
}

我查看了其他人的某种身份验证脚本,他们通过检查信息ldap_bind,但我只能与我的管理员用户联系。

4

1 回答 1

1

我相信你需要做的唯一改变是:

if ($bind = ldap_bind($ldap, "$up@dejan.local", $pw)){

这将使请求成为特定域的本地请求。使用 Active Directory(这有点不同,归咎于 Kerberos),您必须提供登录上下文。

于 2012-08-11T23:04:07.653 回答