PHP kerberos委派

PHP kerberos委派,php,curl,kerberos,Php,Curl,Kerberos,如何使用php将kerberos身份验证转发到另一台服务器(使用CURL)。 我的请求中有$\u服务器['KRB5CCNAME'],我需要使用curl将其委托给另一个服务器 如何做到这一点 代码: 编辑: 我刚刚发现PHP5.3没有CURLOPT_GSSAPI_委托,它是在5.5.0 alpha 3中添加的。 处理一个问题,看看这是否是问题所在。如中所示 CURLOPT_GSSAPI_代表团 将参数设置为CURLGSSAPI_DELEGATION_FLAG以允许无条件 GSSAPI凭证委派。默认

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

如何做到这一点

代码:

编辑:

我刚刚发现PHP5.3没有CURLOPT_GSSAPI_委托,它是在5.5.0 alpha 3中添加的。 处理一个问题,看看这是否是问题所在。

如中所示 CURLOPT_GSSAPI_代表团

将参数设置为CURLGSSAPI_DELEGATION_FLAG以允许无条件 GSSAPI凭证委派。默认情况下,委托处于禁用状态 从7.21.7开始。将参数设置为CULLGSSAPI\u委派\u策略\u标志 仅当服务中设置了OK-AS-delegate标志时才进行委托 如果GSSAPI实现支持此功能,则发出通知单 GSS_C_DELEG_POLICY_标志的定义见 编译时


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

是否可以使用POST请求?在发布此类评论之前,请阅读一些有关Kerberos的信息。Kerberos委派并不是向其他服务器发出相同的已接收请求。您是否使用SPNEGO支持编译了
curl
?没有,但据我所知,如果您使用CURLOPT_GSSAPI_DELEGATIONAlready,则不需要它。我们的curl版本是7.22,因此我假定在编译时可以使用GSS_C_DELEG_POLICY_标志。我将发布我们的代码和更多解释,但它仍然不起作用。并非所有curl编译版本都是根据GSS API编译的,因此您可能希望在phpinfo()中进行检查。已经检查过,它已经编译了GSS,但它没有CURLOPT_GSSAPI_委派,因为它是在PHP5.5.0中添加的,这仍然是alpha版本,因此我们将等待更长的时间
$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));