我如何从php脚本获得windows登录id


How do I get windows login id from a php script?

我有一个PHP web应用程序。当用户打开它时,我需要获得windows系统的登录id。我不再验证用户。

我听说过活动目录,但我不想再次验证用户。当我的web应用程序被打开时,用户名应该被自动捕获。

如何在我的PHP脚本中获得登录id ?

我还听说为mod_ntlm环境和REMOTE_USER变量配置Apache服务器等。这些我都不知道。谁能说得简单点,好让我把这些都配置好?

如果仅在内部LAN上运行,并且网络上的所有windows计算机都针对SBS或完整的windows Active Directory进行身份验证,则可以使用LDAP查询查询浏览页面的用户的登录信息。我多年前为一个内部网做过这个。它非常可靠,但只适用于针对windows域进行身份验证的内部用户。

BASIC LDAP QUERY

    <?php
    // basic sequence with LDAP is connect, bind, search, interpret search result,
    // close connection
    $ds=ldap_connect("192.168.0.1");        // ! Your LDAP/Active Direcotry Server !
    echo "Connection: ".$ds."";
    if ($ds) {
            echo "Binding ..";
            $r=ldap_bind($ds);        // this is an "anonymous" bind, typically read-only access
            echo "Bind result is ".$r."";
            echo "Searching for (sn=A*) .."; // this example searches surname entry for all surnames starting with A
            $sr=ldap_search($ds,"o=Organisation Name, c=UK", "sn=A*"); // ! must use real base dn here !
            echo "Search result is ".$sr."";
            echo "Number of entires returned is ".ldap_count_entries($ds,$sr)."";
            echo "Getting entries ...";
            $info = ldap_get_entries($ds, $sr);
            echo "Data for ".$info["count"]." items returned:";
            for ($i=0; $i<$info["count"]; $i++) {
               echo "dn is: ". $info[$i]["dn"] ."";
               echo "first cn entry is: ". $info[$i]["cn"][0] ."";
               echo "first email entry is: ". $info[$i]["mail"][0] ."";
            }
    //now  close connection
    ldap_close($ds);
} else {
    echo "Unable to connect to LDAP server";
}
?>

我非常怀疑是否有任何web应用程序可以获得windows登录id -这将是一个相当严重的安全问题。

据我所知,您能做的最好的事情就是存储用户的ip并使用它来自动登录(在他们进行一次身份验证之后)。您可以从$_SERVER['REMOTE_ADDR']获取用户的ip地址。

请记住,ip可以被欺骗并且可以更改(有时经常,有时很少),因此自动登录某人不是一种非常安全或可靠的方式。但是,根据应用程序的性质,这可能就足够了。特别是如果您只在内部网中使用它(在这种情况下,如果需要,您可以设置静态ip)。