Ein einmal-in-einem-Weile-Beitrag zu curl
in diesem Bereich sein. Hier ist, was Sie wissen müssen:
curl(1)
selbst weiß nichts über Kerberos und wird weder mit Ihrem Credential-Cache noch Ihre 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 Wissen über Kerberos haben und API-Aufrufe an REST-Endpunkte automatisieren möchten, die von SPNEGO gesichert werden.
Hier ist, was Sie tun müssen:
- Haben Sie einen Unix-artigen Betriebssystem
- mindestens Installieren MIT Kerberos 1,11
- mindestens
curl
7.38.0 gegen MIT Kerberos
- installieren Stellen Sie sicher, dies mit
curl --version
Erwähnung GSS-API und SPNEGO und mit ldd
gegen Ihre MIT Kerberos-Version verknüpft.
- erstellen Client keytab für den Dienstprinzipal mit
ktutil
oder mskutil
- Versuchen Sie, eine TGT mit diesem Client keytab von
kinit -k -t <path-to-keytab> <principal-from-keytab>
- Stellen Sie sicher, mit
klist
, dass Sie ein Ticket-Cache zu erhalten
Die Umgebung ist nun bereit:
- Export
KRB5CCNAME=<some-non-default-path>
- Export
KRB5_CLIENT_KTNAME=<path-to-keytab>
- Invoke
curl --negotiate -u : <URL>
MIT Kerberos erkennt, dass beide Umgebungsvariablen gesetzt sind, prüfen sie, automatisch ein TGT mit Ihrem keytab erhalten, fordern Sie auf curl
eine Service-Ticket und Pass. Du bist fertig.
Hinweis: Dies funktioniert nicht mit Heimdal.
curl versucht, ein gültiges Ticket ** im Cache ** zu erhalten (vgl. Env Variable 'KRB5CCNAME' oder standardmäßig' FILE:/tmp/krb5cc _ $ (id -u) 'unter Unix /' API: 'on Windows) - es ist egal, wie das Ticket erstellt wurde. –
Vorbehalt: Die Windows-Versionen von curl werden kompiliert, um die Microsoft SSPI-Bibliotheken zu unterstützen, nicht die GSSAPI-Bibliotheken, die von Hadoop-REST-Diensten benötigt werden. –
BTW eine Keytab ist eine Datei mit einem Hash-Passwort, erstellt von 'ktutil' auf Linux oder durch ein Active Directory-Dienstprogramm wie' ktpass.exe'. Es ist ** verwendet ** von 'kinit', nicht ** erstellt **. –