Wird bei der Verwendung von --nowogle mit curl eine Keytab-Datei benötigt?

7

2 Antworten

16

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:

  1. Habe ein Unix-ähnliches Betriebssystem
  2. Installieren Sie mindestens MIT Kerberos 1.11
  3. Installiere mindestens curl 7.38.0 gegen MIT Kerberos
  4. Überprüfen Sie dies mit curl --version , indem Sie die GSS-API und SPNEGO und mit ldd , die mit Ihrer MIT Kerberos-Version verknüpft sind, erwähnen.
  5. Erstellen Sie für den Service-Principal eine Client -Schaltfläche mit ktutil oder mskutil
  6. Versuchen Sie, ein TGT mit dieser Client -Schaltfläche nach kinit -k -t <path-to-keytab> <principal-from-keytab> zu erhalten.
  7. Überprüfen Sie mit klist , dass Sie einen Ticket-Cache haben

Die Umgebung ist jetzt bereit zu gehen:

  1. Export KRB5CCNAME=<some-non-default-path>
  2. Export KRB5_CLIENT_KTNAME=<path-to-keytab>
  3. Aufrufen von 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.

    
Michael-O 29.07.2016, 18:03
quelle
4
  1. Überprüfen Sie die Curl-Version

    $ curl -V - Es sollte das Feature "GSS-Negotiate"

    unterstützen
  2. Melden Sie sich mit kinit

    an

    $ kinit <user-id>

  3. Verwende locken

    $ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus

    Die Option

    "- 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.

Avinash 21.07.2016 18:19
quelle

Tags und Links