2013-03-04 46 views
1

我有一個PHP的Web應用程序。當用戶打開它時,我需要獲得Windows系統的ID登錄。我不再認證用戶。如何從php腳本獲取windows登錄ID?

我聽到的Active Directory,但我不希望再次認證用戶。當我的Web應用程序打開時,應該自動捕獲用戶名。

如何在我的PHP腳本中獲取日誌ID?

我還聽說配置Apache服務器mod_ntlm環境和REMOTE_USER變量等。我不知道所有這些的。任何人都可以很簡單地說,以便我可以繼續並配置所有這些?

+0

您如何知道用戶正在從Windows瀏覽? – Joe 2013-03-04 12:52:06

回答

2

如果只是一個內部局域網上運行,所有網絡上的Windows機器上對任何一個SBS或完全成熟的Windows Active Directory的身份驗證就可以查詢用戶瀏覽的頁面與LDAP查詢登錄。我在幾年前和之前爲一個內聯網做過。它非常可靠,但僅適用於針對Windows域進行身份驗證的內部用戶。

基本LDAP查詢

<?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"; 
} 
?> 
0

我很懷疑,如果任何Web應用程序可以獲取Windows登錄ID - 這將是一個非常嚴重的安全問題。

0

據我所知,你能做的最好的是存儲用戶的IP,並使用自動登錄他們(他們已經接受一次驗證後)。您可以從$ _SERVER ['REMOTE_ADDR']獲取用戶的IP。

但請記住,IP地址可能是虛假的,並且可以更改(有時頻繁,有時很少),所以它不是登錄有人在自動非常安全或可靠的方式。但是,根據應用程序的性質,這可能就足夠了。特別是如果你只在Intranet上使用它(在這種情況下,你可以設置靜態ips,如果需要的話)。