[英]Intranet web applications that use the local windows username and password to authenticate using PHP & LDAP
我們正在嘗試修改我們的Intranet Web應用程序,每個用戶都要使用自己的用戶名和密碼登錄身份驗證來登錄所有Intranet Web應用程序。
為此我們嘗試使用他們的本地Windows / Linux系統用戶名和密碼。
一旦用戶登錄到他們的系統,他/她就可以在他/她瀏覽Web應用程序后直接訪問所有Intranet Web應用程序。 他/她無需每次都為每個Intranet Web應用程序登錄。
我閱讀了很多文章( 一 , 二 , 三 , 四等......)但是我無法理解如何通過使用PHP登錄到該系統的本地windows / linux系統用戶名和密碼,至少只有用戶名是更充分。
我試過<?php echo getenv("username"); ?>
<?php echo getenv("username"); ?>
這顯示空白。
請給我一個解決方案。請不要拒絕這個問題。
提前感謝您的回答和評論。
簡答 :您無法在服務器端獲取本地用戶machine-loginname。 這將是一個安全漏洞!
長答案 :您可以使用PHP查詢您的公司LDAP是否在loginform中給出的用戶名和密碼匹配並使用該信息來驗證給定服務的用戶。 這就是一切密碼 - 政策。
但據我了解,您需要一個SingleSignOn -Policy(SSO),以便坐在其客戶端的用戶甚至不需要在訪問網站時提供她的憑據。 這只能通過使用處理“門票”等不同工具鏈來實現。 這樣的工具鏈是Kerberos ,它由Microsofts ActiveDirectory或Apples OpenDirectory使用。 此工具鏈可以使用LDAP作為后端來存儲其密碼。
但使用Kerberos絕非易事。 提供Intranet服務的WebServer必須進行kerberized,以便它可以處理從kerberos服務器獲取的票證。
你應該調查這個方向。 在您最喜歡的搜索引擎中嘗試使用Kerberos或SSO作為搜索字符串。
您必須在PHP中使用LDAP進行身份驗證。
腳步:
1)創建登錄表單2)接收輸入並與數據庫進行比較(通過ldap)。 3)如果OK,用PHP啟動會話,保存Cookie。 4)在所有站點中使用session_start(),這樣您就可以獲得會話信息。
Cookie只能由創建它的網站使用,因此您應將Intranet置於同一域中,或將此信息保存在數據庫中。
PHP不會像你發布的那樣得到你的系統變量,PHP沒有集成到任何操作系統中,就像任何編程語言一樣,你構建你想要的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.