簡體   English   中英

PHP NTLM身份驗證到Active Directory +保持會話

[英]PHP NTLM Authentication to Active Directory + keeping session

我有基於NTLM(活動目錄)的服務,我需要編寫一個PHP應用程序。 通常,用戶使用Activre Directory憑據登錄網站,這沒關系。 但是我想做的是讓他們在PHP編寫的站點中輸入其憑據,在下一步中,它將使用cURL來對用戶通常登錄的基於Active Directory的站點進行身份驗證。

這部分很難。 然后,我需要保持通過PHP cURL腳本對基於Active Directory的站點進行身份驗證的用戶會話,以便以后再次使用它們(CRON查詢站點確定它已更改,並在發生這種情況時自動執行一些操作,通常用戶已執行此操作)手動)。 為了避免在發生此更改時不存儲其憑據以再次進行身份驗證,我不知何故需要在PHP cURL站點中將NTLM會話存儲到通過此PHP cURL站點向該站點進行身份驗證的每個用戶。 我的問題是:那有可能嗎?

提前致謝。

@威廉·穆爾德

您發布的代碼實際上可以存儲cookie,但這並不是我的意思,因為我已經做到了(很抱歉以前沒有編寫過代碼)。 到目前為止,我得到的是:

        $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_COOKIEFILECURLOPT_COOKIEJAR ,cURL會將cookie存儲在本地文件“ cookies.txt”中。 問題是,當我評論CURLOPT_USERPWD選項(在身份驗證和存儲cookie之后,從理論上講,我有會話)時,我無法授權到網站。 也許它會重新初始化NTLM握手授權,並希望輸入我不想存儲的用戶名和密碼。

我想只保存會話信息,提供服務這個會話信息,而忽略第二身份驗證,但卷曲似乎沒有采取從cookie文件這個數據,並與不相關的數據重寫發送給我從服務的響應不AUTHRORISED訪問請求。

好吧,是的,你可以

$ch = curl_init('http://www.google.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// Get headers too with this line
curl_setopt($ch, CURLOPT_HEADER, 1);
$result = curl_exec($ch);
// Get cookie
preg_match('/^Set-Cookie:\s*([^;]*)/mi', $result, $m);

var_dump(parse_url($m[1]));

// And then of course store it somewhere :-)

如此處所示, 如何將Cookie從php curl變成變量

暫無
暫無

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

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