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