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