2

如何使用 php.ini 将 kerberos 身份验证转发到另一台服务器(使用 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 中。处理一个问题以查看是否是问题所在。

4

1 回答 1

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 标志。

于 2013-02-20T10:24:07.447 回答