我有一個PHP的Web應用程序。當用戶打開它時,我需要獲得Windows系統的ID登錄。我不再認證用戶。如何從php腳本獲取windows登錄ID?
我聽到的Active Directory,但我不希望再次認證用戶。當我的Web應用程序打開時,應該自動捕獲用戶名。
如何在我的PHP腳本中獲取日誌ID?
我還聽說配置Apache服務器mod_ntlm環境和REMOTE_USER變量等。我不知道所有這些的。任何人都可以很簡單地說,以便我可以繼續並配置所有這些?
我有一個PHP的Web應用程序。當用戶打開它時,我需要獲得Windows系統的ID登錄。我不再認證用戶。如何從php腳本獲取windows登錄ID?
我聽到的Active Directory,但我不希望再次認證用戶。當我的Web應用程序打開時,應該自動捕獲用戶名。
如何在我的PHP腳本中獲取日誌ID?
我還聽說配置Apache服務器mod_ntlm環境和REMOTE_USER變量等。我不知道所有這些的。任何人都可以很簡單地說,以便我可以繼續並配置所有這些?
如果只是一個內部局域網上運行,所有網絡上的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";
}
?>
我很懷疑,如果任何Web應用程序可以獲取Windows登錄ID - 這將是一個非常嚴重的安全問題。
據我所知,你能做的最好的是存儲用戶的IP,並使用自動登錄他們(他們已經接受一次驗證後)。您可以從$ _SERVER ['REMOTE_ADDR']獲取用戶的IP。
但請記住,IP地址可能是虛假的,並且可以更改(有時頻繁,有時很少),所以它不是登錄有人在自動非常安全或可靠的方式。但是,根據應用程序的性質,這可能就足夠了。特別是如果你只在Intranet上使用它(在這種情況下,你可以設置靜態ips,如果需要的話)。
您如何知道用戶正在從Windows瀏覽? – Joe 2013-03-04 12:52:06