Einmal in einer Weile Beitragszahler zu curl
in diesem Bereich. Hier ist, was Sie wissen müssen:
curl(1)
selbst weiß nichts über Kerberos und wird weder mit Ihrem Berechtigungscache noch mit Ihrer Keytab-Datei interagieren. Es wird alle Aufrufe an eine GSS-API-Implementierung delegieren, die die Magie für Sie tun wird. Welche Magie hängt von der Bibliothek, Heimdal und MIT Kerberos ab.
Basierend auf Ihrer Frage nehme ich an, dass Sie wenig über Kerberos wissen und einfach API-Aufrufe an REST-Endpunkte automatisieren möchten, die von SPNEGO gesichert werden.
Hier ist was Sie tun müssen:
curl
7.38.0 gegen MIT Kerberos curl --version
, indem Sie die GSS-API und SPNEGO und mit ldd
, die mit Ihrer MIT Kerberos-Version verknüpft sind, erwähnen. ktutil
oder mskutil
kinit -k -t <path-to-keytab> <principal-from-keytab>
zu erhalten.
klist
, dass Sie einen Ticket-Cache haben Die Umgebung ist jetzt bereit zu gehen:
KRB5CCNAME=<some-non-default-path>
KRB5_CLIENT_KTNAME=<path-to-keytab>
curl --negotiate -u : <URL>
MIT Kerberos erkennt, dass beide Umgebungsvariablen gesetzt sind, inspiziert sie, ruft automatisch ein TGT mit Ihrer Schlüsseltabelle ab, fordert ein Serviceticket an und übergibt es an curl
. Du bist fertig.
Hinweis : Dies funktioniert nicht mit Heimdal.
Überprüfen Sie die Curl-Version
$ curl -V
- Es sollte das Feature "GSS-Negotiate"
Melden Sie sich mit kinit
$ kinit <user-id>
Verwende locken
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
"- negotiate" ermöglicht SPNEGO
"- u" -Option ist erforderlich, wird aber ignoriert (das während kinit angegebene Prinzip wird verwendet)
"- b" & amp; "-c" -Optionen werden verwendet, um http-Cookies zu speichern und zu senden.