2011-11-11 44 views
4

我之所以在這裏發帖,是因爲我還不清楚爲了達到這個目的必須滿足哪些具體要求。如何從我的PHP應用程序獲取用戶的Windows用戶名?

我們在iSeries Apache Web服務器上運行我們的PHP應用程序。我們所有的用戶都在IE上。我們在我們的公司網絡內使用AD作爲我們的用戶名。

當前的apache服務器設置不需要任何用戶登錄到我們的網頁......如果您在我們的網絡上,您可以訪問該頁面。

有沒有一種方法(通過LDAP或其他方式)獲取登錄的Windows用戶名?最後的最後手段是將用戶重定向到我們的Windows服務器上託管的ASP.NET網站,並將用戶名傳回給PHP應用程序。但是,這又是一個最後的手段。

這裏的鏈接:Can you get a Windows (AD) username in PHP?有很多好的建議,但是AUTH_USER變量是空的,正如鏈接中提到的...我不認爲iSeries Apache服務器可以實現Windows集成身份驗證。

如果有人能解釋我的選擇,並且(如果可能的話)這些選項的難度......這將是grealy表示讚賞。請儘可能具體,因爲我沒有使用LDAP或服務器配置的經驗。

回答

3

您可以從ActiveX對象和JavaScript中獲取它,因爲您使用的是IE。爲了將其轉化爲PHP,可能將其作爲隱藏字段包含在登錄頁面中?

try { 
    var activex = new ActiveXObject('WScript.Network'); 
    document.write(activex.userName); 
} catch (ex) { 
    document.write("unable to get user info"); 
} 

確保您已經添加這個網站到瀏覽器的信任區域和enabled scripts它運行。

+0

當我嘗試這個,我得到消息「自動化服務器不能創建對象」。我一直在使用這一點,但無法找到任何解決方案在IE8中工作,而無需更改服務器。 – adam

0

從我寫PHP應用程序的SSO處理的經驗來看,您可以使用mod_auth_ntlm和Kerberos的組合(檢出this link,它非常接近我記憶中的內容,儘管我的原始設置是在〜5年前Gentoo盒子)。如果我沒有記錯,您應該在此設置中找到$_SERVER["REMOTE_USER"]變量中的用戶名。

相關問題