Gewusst wie: aktivieren von Funktionen für php-curl
Muss ich meine PHP-CLI-script zu posten einige Wert auf eine SPNEGO authentifiziert Website.
$ch = curl_init(USERSPACE_MYSQL_SERVICES);
curl_setopt_array($ch, [
CURLOPT_HTTPAUTH => ??, //Set to SPNEGO
CURLOPT_POSTFIELDS => [...]
]);
Jedoch SPNEGO ist deaktiviert aus irgendeinem Grund:
Auszug aus meiner 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
Den Apache-server, dass es kommuniziert wird wie folgt festgelegt:
AuthType Kerberos
AuthName "Kerberos LAN Realm Login"
KrbAuthRealm LAN
Krb5KeyTab /etc/apache2/auth/apache2.keytab
KrbMethodK5Passwd Off
KrbSaveCredentials On
KrbLocalUserMapping On
Wenn Sie versuchen, es über die Befehlszeile curl
es funktioniert, aber ich habe bei der Eingabe eine dummy Passwort:
curl --negotiate -u user https://example.com
Enter host password for user 'user':
<html>
...
Wie kann ich aktivieren Sie SPNEGO für die php-curl und wie würde ich es in mein script?
Update
Ich habe versucht, die folgenden:
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;
Und ich bekomme: HTTP ERROR 401
- SPNEGO ist nicht eine Art von Authentifizierung ist ein Mechanismus, der clients und-Server verwenden, um zu bestimmen, welche Art von auth-Typen die andere unterstützt. Ihr server verwendet Kerberos als authentisierungsmethode, die AFAIK sollte die Arbeit mit
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY)
(obwohl diekrb4 => No
zeigt dies funktioniert möglicherweise nicht auf der box). Die Optionen angezeigt, die vonphpinfo()
sind build-time-Optionen, die Sie brauchen würde, um wieder aufzubauen die Erweiterung, um Sie zu ändern. - ok, ich werde das ausprobieren, danke. Ich habe auf der Suche für die build-Zeit-Optionen, aber konnte Sie nicht finden. Auch mein server krb5-und nicht krb4.
- Ich habe versucht mit
CURL_AUTH_GSSNEGOTIATE
- und das hat nicht funktioniert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie es aussieht, müssen Sie möglicherweise neu kompilieren curl mit dem Parameter "--with-spnego" in Ihrem configure-Kommando.
Ein Beispiel für einen configure Befehl:
http://curl.haxx.se/mail/lib-2012-02/0094.html
Full on docs (overkill):
http://curl.haxx.se/docs/install.html
php_curl.dll
auf Windows server mitkrb4 -> yes
?Stellt sich heraus, dass brauche ich nicht aktiviertem SPNEGO mit CURL wie es funktioniert mit den GSS-auth. Genau wie bei der CLI, die ich brauche, um
CURLOPT_USERPWD
ohne ein Kennwort:Nun funktioniert es Prima.