2

phpを使用して(CURLを使用して)別のサーバーにKerberos認証を転送するにはどうすればよいですか?リクエストが$_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.htmlCURLOPT_GSSAPI_DELEGATION のよう

パラメータをCURLGSSAPI_DELEGATION_FLAGに設定して、無条件のGSSAPIクレデンシャル委任を許可します。7.21.7以降、委任はデフォルトで無効になっています。パラメータをCURLGSSAPI_DELEGATION_POLICY_FLAGに設定して、この機能がGSSAPI実装でサポートされ、コンパイル時にGSS_C_DELEG_POLICY_FLAGの定義が利用可能であった場合に、サービスチケットでOK-AS-DELEGATEフラグが設定されている場合にのみ委任します。

OK-AS-DELEGATEフラグは、Kerberosサービスチケット(レルムポリシー)で設定する必要があります。

于 2013-02-20T10:24:07.447 に答える