我有基於NTLM(Active Directory)的服務,我需要編寫一個PHP應用程序。通常情況下,用戶使用Activre Directory憑據登錄網站,沒關係。 但我想要做的是讓他們輸入他們的憑據到PHP編寫的站點,該站點在下一步中將使用cURL來驗證用戶是否正常登錄到基於Active Directory的站點。PHP NTLM身份驗證到Active Directory +保持會話
而這一部分很難。然後,我需要保持通過PHP cURL腳本驗證到基於Active Directory的站點的用戶會話,以便稍後再次使用它們(CRON查詢站點以確定它已更改,並在發生這種情況時自動執行一些操作,通常用戶具有手動)。 爲了不存儲他們的憑證以便在發生這種變化時再次進行身份驗證,我需要將每個用戶通過PHP cURL站點存儲到PHP cURL站點的NTLM會話中,以便通過此PHP站點網站向 該站點進行身份驗證。 我的問題是:這甚至可能嗎?
在此先感謝。
@Willem穆德
你已經發布的代碼實際上做的cookie存儲,但是這不是我的觀點becouse我已經這樣做了(對不起,之前不寫它)。我走到這一步是:
$cookie_file_path = dirname(__FILE__) . '/cookies.txt';
$ch = curl_init();
//==========================================================================
curl_setopt($ch, CURLOPT_USERPWD, $username. ':' . $password);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_FAILONERROR, 0);
curl_setopt($ch, CURLOPT_MAXREDIRS, 100);
//==========================================================================
$ret = curl_exec($ch);
通過使用選項CURLOPT_COOKIEFILE
和CURLOPT_COOKIEJAR
,捲曲確實該cookie存儲在本地文件「cookie.txt的」。問題是,當我評論CURLOPT_USERPWD
選項(在認證和存儲cookie之後,理論上我有會話)時,我無法向網站授權。也許它會重新初始化NTLM握手授權,並期待用戶名和密碼,我不想存儲它們。
我想只存儲會話信息,提供本次會話信息服務並省略第二次身份驗證,但是cURL似乎並未將這些數據從cookie文件中取出,並且它與不相關的數據從服務中發送給我回應未授權訪問請求。
看到請不要修改的問題那麼多(從「如何存儲的cookie」到「如何發送的cookie」),因爲它使所有給定的答案無關緊要。相反,請接受最佳答案併發布另一個問題。這讓每個人都高興,併爲混亂保存:-) – 2013-02-27 10:23:18