无论如何要检查用户帐户是否通过PHP / LDAP锁定?

时间:2009-07-06 14:17:21

标签: php ldap

我们创建的Intranet站点需要与用户的网络登录密码相同的密码,因此我们使用LDAP来检查用户名/密码。

没关系,但是如果他们错误地输入三次就会锁定他们的帐户,并且有一两个用户发现这一点令人困惑。

无论如何我都可以检查,使用LDAP / PHP,无论他们的帐户是否被锁定,所以我可以显示一条消息,提示他们联系IT?

由于

4 个答案:

答案 0 :(得分:2)

您需要使用PHP中的LDAP功能连接到LDAP并执行搜索/读取以查找和获取信息。您可以在此处阅读:http://us3.php.net/manual/en/book.ldap.php

查找阅读条目的示例代码:

if (!($ldap=ldap_connect($ldapip, $ldapport)))  
    {
        die("Error:Unable to connect to the LDAP Server");
        return;
    }
    if (!ldap_bind($ldap, $admindn, $adminpwd))
    {
        die("Error:Unable to bind to '$dn'!");
        return;
    }

    $sr=ldap_search($ldap, $userbasedn, $filter);
    $info = ldap_get_entries($ldap, $sr);

    if($info["count"] > 0)
    {
        $entry = ldap_first_entry($ldap, $sr);
        $return_array = ldap_get_attributes($ldap, $entry);
        if($return_array)
        {
            for ($i=0;$i<$return_array['count'];$i++)
            {
                      print($return_array[$i]);
                      print($return_array[$return_array[$i]][0]);
                    }
        }
    }

您可能想要检查AD中的字段lockoutTime,LDAP中的nsaccountlock并读取它们

答案 1 :(得分:0)

如果没有标准的“锁定”字段,我会使用LDAP浏览器比较锁定前后的帐户。您可以使用LBE(LDAP浏览器/编辑)提取用户对象的LDIF文件,然后使用您喜欢的差异工具来比较它们。

答案 2 :(得分:0)

这不会破坏共享登录的想法吗?

如果您的Intranet站点允许的尝试次数多于网络登录,则可以使用它来查找用户的密码。

答案 3 :(得分:0)

AD个人资料属性useraccountcontrol之一。 这包含decimal值,可在此处转换为可读;

锁定可以指多种情况,通常是

  • ACCOUNTDISABLE 2 / 0x0002(hexa)
  • PASSWORD_EXPIRED 8388608 / 0x800000
  • LOCKOUT 16 / 0x0010