PHP kerberos代表团

时间:2013-02-19 09:35:18

标签: php curl kerberos

如何用php将kerberos auth转发到另一台服务器(使用CURL)。 我的请求中有$_SERVER['KRB5CCNAME'],我需要使用curl将其委托给另一台服务器。

如何做到这一点?

代码:

$ch = curl_init();

$url = 'http://www.somesite.com/info.php';

@curl_setopt($ch, CURLOPT_HTTPGET, 1);

@curl_setopt($ch, CURLOPT_GSSAPI_DELEGATION, CURLGSSAPI_DELEGATION_FLAG);
@curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
@curl_setopt($ch, CURLOPT_USERPWD, ":");

@curl_setopt($ch, CURLOPT_URL, $url);
@curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$resultContent = @curl_exec($ch);

$httpCode = @curl_getinfo($ch, CURLINFO_HTTP_CODE);

if(@curl_errno($ch))
{
    $msg = @curl_error($ch);
    curl_close($ch);
    die('Curl error: content: '.$this->resultContent.' code: '.$this->httpCode);
}

curl_close($ch);

die('R: code: '.$httpCode.' content: '. htmlspecialchars($resultContent));

编辑:

我只是弄清楚php 5.3没有得到CURLOPT_GSSAPI_DELEGATION,它已被添加到5.5.0 alpha 3中。 处理一个问题,看看是否存在问题。

1 个答案:

答案 0 :(得分:1)

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html中一样 的 CURLOPT_GSSAPI_DELEGATION

  

将参数设置为CURLGSSAPI_DELEGATION_FLAG以允许无条件   GSSAPI凭证授权。默认情况下禁用委派   自7.21.7起。将参数设置为CURLGSSAPI_DELEGATION_POLICY_FLAG   仅在服务中设置了OK-AS-DELEGATE标志时才委派   如果GSSAPI实现支持此功能,则为票证   GSS_C_DELEG_POLICY_FLAG的定义见   编译时。

应在Kerberos服务票证(域政策)中设置OK-AS-DELEGATE标志。