LDAP在PHP中验证用户

时间:2012-08-11 14:23:35

标签: php active-directory ldap

我正在构建一个从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检查了这些信息,但我只能与管理员用户联系。

1 个答案:

答案 0 :(得分:1)

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

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

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