簡體   English   中英

PHP 內網可以共享 Windows 登錄嗎?

[英]Can a PHP intranet share Windows logins?

我創建了一些需要用戶登錄的基於 PHP 的 Intranet 資源。用戶創建自己的登錄名,我驗證他們是否使用 cookie 登錄。

有人問我是否可以將該登錄名綁定到他們的 Windows 登錄名。 我最初的反應是“web 頁面無法訪問您的 Windows 登錄 - 這將是一個安全風險。” 但是我們的一個部門使用 Sharepoint,它實際上與 Windows 登錄相關聯。

這是怎么做的? 我可以在 PHP 中做到嗎? 如果是這樣,為什么它不是一個可怕的安全漏洞?

您正在尋找的是針對 PHP 網站的 NTLM 身份驗證,這是完全可行的,但似乎 PHP 中沒有單一的方法可以做到這一點。

看看http://siphon9.net/loune/2007/10/simple-lightweight-ntlm-in-php/

您還需要將站點添加到 IE 中的受信任站點(或您使用的任何瀏覽器中的等效站點),並在受信任站點的設置中,打開“發送當前用戶名和密碼”。

這不是一個可怕的安全漏洞,因為憑據不是通過網絡直接發送的,並且最終用戶已明確告訴瀏覽器將憑據發送到相關網站。

PHP 支持 LDAP,因此您可以訪問 Windows 的 Active Directory

SourceForge 上有這個項目: adLDAP - “LDAP Authentication with PHP for Active Directory”

通常這是使用 LDAP 和 NTLM 的組合來完成的。 像 IE 和 Firefox 這樣的瀏覽器可以進行 NTLM 身份驗證,我相信這就是 Sharepoint 的工作原理。 我運行一個基於 Java 的門戶應用程序,該應用程序使用 LDAP 同步用戶並使用 NTLM 進行身份驗證。

您絕對不想做的是讓用戶在瀏覽器中輸入他們的域用戶名和密碼。 在過去的幾年里,我見過幾個項目使用這種方法和 LDAP 來驗證 Windows 用戶。 你是對的,這是一個安全問題。 用戶只應輸入一次密碼:登錄工作站時。 您最不想要的是緩存/臨時文件中的密碼。

抱歉,我無法提供“使用 PHP 應用程序執行此操作的方法”答案。 據我所知,這個問題沒有一個答案。

(One thing I have done in the past, and I never really checked to see if it was valid or poor form, was to use PHP from IIS. If you're using IIS, then PHP will populate the server variable REMOTE_USER with the Windows用戶的用戶名(域\用戶)。它適用於我當時正在做的事情。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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