Lors de l'utilisation de --négocier avec curl, est un fichier keytab nécessaire?
La la documentation décrivant comment se connecter à un kerberos sécurisé de point de terminaison est le suivant:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
La -u
drapeau doit être fourni, mais il est ignoré par le roulage.
Ne le --negotiate
option causer le roulage de rechercher un fichier keytab, qui a été créé à l'avance avec les kinit
de commande, ou s'enroulent demander des informations d'identification?
Si elle recherche un fichier keytab, ce nom de fichier s'la commande-être cherchez-vous?
curl tente d'obtenir un billet valide dans le cache (cf. env variable
Mise en garde: les versions de Windows de roulage sont compilés pour soutenir l'Microsoft SSPI bibliothèques, pas GSSAPI bibliothèques qui sont requis par Hadoop des services REST.
BTW d'un fichier keytab est un fichier contenant un mot de passe haché, créé par
si vous ajoutez vos commentaires comme une réponse, je serai heureux d'accepter!
Encore mieux: si vous mettez à jour votre question, de sorte qu'il est plus précis, je peux faire un plus de réponse spécifique (par exemple, voulez-vous SPNEGO à chaque fois, ou juste une fois pour obtenir le réutilisables Délégation Jeton? voulez-vous savoir pourquoi HttpFs utilise signé un cookie à la place de l'Jeton comme WebHDFS? etes-vous inquiet au sujet de l'absence de contrôles de cohérence à l'aide de WebHDFS vs utilisation de l'API Java? etc.)
KRB5CCNAME
ou par défaut FILE:/tmp/krb5cc_$(id -u)
sur Unix / API:
sur Windows) -- il n'aime pas la façon dont le billet a été créé.Mise en garde: les versions de Windows de roulage sont compilés pour soutenir l'Microsoft SSPI bibliothèques, pas GSSAPI bibliothèques qui sont requis par Hadoop des services REST.
BTW d'un fichier keytab est un fichier contenant un mot de passe haché, créé par
ktutil
sur Linux ou par un Active Directory utilitaire comme ktpass.exe
. C'est utilisé par kinit
, pas de créer.si vous ajoutez vos commentaires comme une réponse, je serai heureux d'accepter!
Encore mieux: si vous mettez à jour votre question, de sorte qu'il est plus précis, je peux faire un plus de réponse spécifique (par exemple, voulez-vous SPNEGO à chaque fois, ou juste une fois pour obtenir le réutilisables Délégation Jeton? voulez-vous savoir pourquoi HttpFs utilise signé un cookie à la place de l'Jeton comme WebHDFS? etes-vous inquiet au sujet de l'absence de contrôles de cohérence à l'aide de WebHDFS vs utilisation de l'API Java? etc.)
OriginalL'auteur Chris Snow | 2016-07-21
Vous devez vous connecter pour publier un commentaire.
Être une fois-dans-un-tout en contribuant à
curl
dans ce domaine. Voici ce que vous devez savoir:curl(1)
lui-même ne sait rien à propos de Kerberos et ne sera pas interagir ni avec votre cache d'informations d'identification, ni votre fichier keytab. Il va déléguer tous les appels à une GSS-API de mise en œuvre qui permettra de faire de la magie pour vous. Ce que la magie dépend de la bibliothèque, Heimdal et MIT Kerberos.Basé sur votre question, je suppose que vous avez peu de connaissances sur Kerberos et souhaitez simplement automatiser les appels d'API à une des extrémités REST garantis par SPNEGO.
Voici ce que vous devez faire:
curl
7.38.0 à l'encontre de MIT Kerberoscurl --version
de mentionner GSS-API et SPNEGO et avecldd
liés à l'encontre de votre MIT Kerberos version.ktutil
oumskutil
kinit -k -t <path-to-keytab> <principal-from-keytab>
klist
que vous avez un billet cacheEnvironnement est maintenant prêt à aller:
KRB5CCNAME=<some-non-default-path>
KRB5_CLIENT_KTNAME=<path-to-keytab>
curl --negotiate -u : <URL>
MIT Kerberos va détecter que les deux variables d'environnement sont définies, les inspecter, d'obtenir automatiquement un ticket TGT avec votre fichier keytab, demander un ticket de service et de passer à
curl
. Vous êtes fait.Note: cela ne fonctionnera pas avec Heimdal.
OriginalL'auteur Michael-O
Vérifier curl version
$ curl -V
- Elle doit prendre en charge la fonctionnalité "ESG-Négocier"De connexion à l'aide de
kinit
$ kinit <user-id>
Utiliser curl
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus
"--négocier" option permet SPNEGO
"-u" est nécessaire, mais ignoré (le principe spécifié lors de kinit est utilisé)
"-b" & "-c" les options sont utilisées pour stocker et envoyer des cookies http.
GSS-Negotiate
parce que toutes ces version sont cassés avant 7.38.0. Il a pour soutienSPNEGO
.Cela fonctionne très bien pour moi, et il est beaucoup moins le programme d'installation/de la difficulté que l'on a accepté la réponse. curl 7.35.0, pas de SPNEGO, seulement de l'ESG-Négocier.
Sont les options de témoins nécessaires pour un test de base de connectivité? Si oui, pourquoi?
Répondre à moi-même: sans cookiejar le protocole http de redirection à l'infini, même si le Kerberos partie a été un succès.
Moi aussi, je suis à l'aide d'un pré-7.38 version avec SPNEGO sans problème.
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.28.4 zlib/1.2.7 libidn/1.28 libssh2/1.4.3 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets
.GSS-Negotiate
semble être le billet.OriginalL'auteur Avinash