无法从php的Intranet获取用户名登录名

时间:2018-07-11 06:00:00

标签: php ldap username

我想直接将用户名传递给ldap,而无需用户交互。  我能够获取客户端的主机名,IP地址,但无法从php的Intranet获取用户配置文件名(用户名),请帮助我获取用户名

function checkingLogin($username, $pass, $domain) {

    $dom = "$domain\\"; //Domain Prefix for UNAME which ouputs "domain\"
    $user = $dom . $u; 
    $hostname = 'ldap://abc.com';
    $baseDN = 'OU=users, DC=abc, DC=com'; //Narrow down if you have alot of objects as search could take along time
    $search = "(samaccountname=$u)"; //Compare with Username

    $ldap = ldap_connect($hostname);

    if ($ldap) {

        $ldapbind = ldap_bind($ldap, $user, $pass);

        if ($ldapbind) {

            $ldapSearch = ldap_search($ldap, $baseDN, $search);
            $entry = ldap_first_entry($ldap, $ldapSearch);
            $info = ldap_get_values($ldap, $entry, "displayname"); 

            return $info[0];

        }

        return false; //Failed Auth

    } 

      return false; //Connection Failed

}

1 个答案:

答案 0 :(得分:0)

出于安全考虑,用户浏览器未提供该信息。否则,这意味着您用于登录计算机的用户名将发送到每个网站。你真的想要那个吗?

此外,它需要在计算机和浏览器之间进行非常紧密的集成。 f.e. Windows和Edge或IE,但我怀疑它能否在Firefox或Chrome上运行。

尽管有一些方法可以实际完成您想做的事情。但是它们需要访问客户端计算机和众所周知的环境。然后,您也许可以设置诸如Kerberos之类的内容,以允许登录到您的计算机,并使用该令牌对Web服务进行身份验证。但这不是默认设置!