La documentation décrivant comment se connecter à un point de terminaison sécurisé par Kerberos indique ce qui suit:
curl -i --negotiate -u : "http://<Host>:<PORT>/webhdfs/v1/<PATH>?op=..."
Le -u
Le drapeau doit être fourni mais il est ignoré par curl.
Est-ce que le --negotiate
Option permet à Curl de rechercher un keytab créé à l’avance avec la commande kinit
, ou curl Demander des informations d’identité?
Si un fichier keytab est recherché, quel nom de fichier la commande recherchera-t-elle?
Etre un contributeur ponctuel à curl
dans ce domaine. Voici ce que vous devez savoir:
curl(1)
lui-même ne sait rien de Kerberos et n'interagira ni avec votre cache d'informations d'identification ni avec votre fichier de clés. Il déléguera tous les appels à une implémentation GSS-API qui fera le travail magique pour vous. Quelle magie dépend de la bibliothèque, Heimdal et MIT Kerberos.
Sur la base de votre question, je suppose que vous avez peu de connaissances sur Kerberos et que vous souhaitez simplement automatiser les appels d'API vers un REST points de terminaison sécurisés par SPNEGO.
Voici ce que tu dois faire:
curl
7.38.0 contre MIT Kerberoscurl --version
mentionnant GSS-API et SPNEGO et avec ldd
lié à votre MIT version Kerberos.ktutil
ou mskutil
kinit -k -t <path-to-keytab> <principal-from-keytab>
klist
que vous avez un cache de ticketsL'environnement est maintenant prêt à partir:
KRB5CCNAME=<some-non-default-path>
KRB5_CLIENT_KTNAME=<path-to-keytab>
curl --negotiate -u : <URL>
MIT Kerberos détectera que les deux variables d’environnement sont définies, les inspectera, obtiendra automatiquement un TGT avec votre clavier, demandera un ticket de service et passera à curl
. Vous avez terminé.
Note: cela ne fonctionnera pas avec Heimdal.
Vérifier la version curl
$ curl -V
- Il devrait prendre en charge la fonctionnalité "GSS-Negotiate"
Connectez-vous en utilisant kinit
$ kinit <user-id>
Utilisez curl
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
L'option "--negotiate" active SPNEGO
L'option "-u" est obligatoire mais est ignorée (le principe spécifié pendant kinit est utilisé)
Les options "-b" et "-c" sont utilisées pour stocker et envoyer des cookies HTTP.