php:转发ntlm凭据卷曲

beg*_*er_ 5 php curl ntlm

我有一个动态的PHP页面,我需要使用get参数调用.然后,我想将生成的html放入一个字符串中,稍后再使用它(我正在尝试使用tonic框架进行Web服务)

所以这类似于PHP - 将动态生成(和回显)的HTML读入字符串?我尝试了使用cURL的答案.

问题是使用ntlm(apache mod_auth_sspi)完成身份验证.执行curl的php脚本已经过身份验证,例如,只有有效的用户才能执行它.以某种方式可以将这些"凭据"传递给cURL?(用户名可用但当然不是密码)

或者一个完全不同的方法也可以,但我只想创建一个创建带有html内容的字符串的函数.

$response = new Response($request);
$format = $request->mostAcceptable(array(
    'json', 'html', 'txt'
        ));

switch ($format) {

    case 'html':
        $response->addHeader('Content-type', 'text/html');
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://localhost/viewRecord.php?identifier=' . $identifier);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM); 
        $html = curl_exec($ch);
        curl_close($ch);
        $response->body = $html;
        break;
    //...   
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ley 6

我可以通过添加以下curl选项来实现此功能:

curl_setopt($curly[$id], CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
curl_setopt($curly[$id], CURLOPT_UNRESTRICTED_AUTH, true);
curl_setopt($curly[$id], CURLOPT_USERPWD, ":");
Run Code Online (Sandbox Code Playgroud)

根据php的版本,有一个错误:https://bugs.php.net/bug.php? id = 62195


beg*_*er_ 0

答案很简单:

这不可能。

解决方法是将所有文件(包括 php、JavaScript 和 CSS)放在不需要 NTLM 身份验证的目录中。

要实现这一目标,要么需要访问 Apache 配置,如果不可能,您唯一可以希望的是 Apache 配置允许覆盖 .htaccess 中的 SSPI。允许任何身份验证(=也无),但限制对 127.0.0.0 的访问,因为所有请求都来自同一服务器上的 cURL。

对于授权,您可以将数据放入 php 会话中,并将会话 cookie 传递给 cURL,然后会话数据可用于从 cURL 调用的页面中进行授权。

编辑:

我基本上减少了 NTLM 的使用。我现在有 1 个登录页面(身份验证),其他所有内容都由 php 会话(授权)控制。看

Apache2、PHP:创建自动ntlm登录页面