1

SPNEGO 認証済みサイトに値を投稿するには、CLI PHP スクリプトが必要です。

$ch = curl_init(USERSPACE_MYSQL_SERVICES);

curl_setopt_array($ch, [
    CURLOPT_HTTPAUTH => ??, //Set to SPNEGO
    CURLOPT_POSTFIELDS => [...] 
]);

ただし、SPNEGO は何らかの理由で無効になっています。

私のphpinfoから抽出:

curl

cURL support => enabled
cURL Information => 7.21.6
Age => 3
Features
AsynchDNS => No
Debug => No
GSS-Negotiate => Yes
IDN => Yes
IPv6 => Yes
Largefile => Yes
NTLM => Yes
SPNEGO => No <---------------
SSL => Yes
SSPI => No
krb4 => No
libz => Yes
CharConv => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtmp, rtsp, smtp, smtps, telnet, tftp
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/1.0.0e
ZLib Version => 1.2.3.4

通信先の Apache サーバーは次のように設定されています。

            AuthType Kerberos
            AuthName "Kerberos LAN Realm Login"
            KrbAuthRealm LAN
            Krb5KeyTab /etc/apache2/auth/apache2.keytab

            KrbMethodK5Passwd Off
            KrbSaveCredentials On
            KrbLocalUserMapping On

コマンドラインから試してみるとcurlうまくいきますが、ダミーのパスワードを入力する必要があります:

curl --negotiate -u user https://example.com
Enter host password for user 'user':
<html>
...

php curl で SPNEGO を有効にするにはどうすればよいですか? また、スクリプトで SPNEGO を使用するにはどうすればよいですか?

アップデート

私は次のことを試しました:

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPAUTH => CURLAUTH_ANY,
    CURLOPT_POSTFIELDS => [...]
]);

$response = curl_exec($ch);

$info = curl_getinfo($ch);

if ($info['http_code'] >= 400)
      die("HTTP ERROR {$info['http_code']}");

echo $response;

そして私は得る:HTTP ERROR 401

4

2 に答える 2

1

SPNEGO は GSS 認証で正常に動作するため、CURL で SPNEGO を有効にする必要がないことがわかりました。CLI と同様にCURLOPT_USERPWD、パスワードを指定せずに設定する必要があります。

$username = rtrim(`id -un`, "\n");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPAUTH => CURLAUTH_ANY,
    CURLOPT_POSTFIELDS => [...],
    CURLOPT_USERPWD => "$username:"
]);

今では問題なく動作します。

于 2012-04-03T18:56:55.257 に答える
1

configure コマンドで "--with-spnego" 引数を指定して curl を再コンパイルする必要があるようです。

configure コマンドの例: http://curl.haxx.se/mail/lib-2012-02/0094.html

完全なドキュメント (やり過ぎ): http://curl.haxx.se/docs/install.html

于 2012-04-03T18:42:35.803 に答える