簡體   English   中英

使用本地Windows用戶名和密碼進行身份驗證的Intranet Web應用程序,使用PHP和LDAP進行身份驗證

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM