При использовании --negotiate с curl требуется файл keytab?
на документация описание подключения к защищенной конечной точке kerberos показывает следующее:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
на -u флаг должен быть предоставлен, но игнорируется curl.
тут --negotiate опция заставляет curl искать keytab, который был создан заранее с помощью kinit command, или будет curl запрашивать учетные данные?
если он ищет файл keytab, какое имя файла будет искать команда?
2 ответов
будучи один раз-в-А-а-автор curl в этой области. Вот что вам нужно знать:
curl(1) сам ничего не знает о Kerberos и не будет взаимодействовать ни с вашим кэшем учетных данных, ни с вашим файлом keytab. Он делегирует все вызовы реализации GSS-API, которая сделает волшебство для вас. Какая магия зависит от библиотеки, Heimdal и MIT Kerberos.
основываясь на вашем вопросе, я предполагаю, что у вас мало знаний о Kerberos и хотите просто автоматизировать вызовы API к конечным точкам REST, защищенным SPNEGO.
вот что вам нужно сделать:
- иметь Unix-подобную ОС
- установите по крайней мере MIT Kerberos 1.11
- установить по крайней мере
curl7.38.0 против MIT Kerberos - проверьте это с помощью
curl --versionупоминание GSS-API и SPNEGO и сlddсвязано с вашей версией MIT Kerberos. - создать клиент keytab для субъекта-службы с
ktutilилиmskutil - попробуйте получить TGT с этим клиент keytab by
kinit -k -t <path-to-keytab> <principal-from-keytab> - проверить с помощью
klistчто у вас есть кэш
окружающая среда теперь готова к работе:
- экспорт
KRB5CCNAME=<some-non-default-path> - экспорт
KRB5_CLIENT_KTNAME=<path-to-keytab> - Invoke
curl --negotiate -u : <URL>
MIT Kerberos обнаружит, что обе переменные среды установлены, проверьте их, автоматически получите TGT с помощью keytab, запросите сервисный билет и пройдите в curl. Вы закончили.
Примечание: это не будет работать с Heimdal.
-
проверить версию curl
$ curl -V- Он должен поддерживать функцию "GSS-Negotiate" -
войти с помощью
kinit$ kinit <user-id> -
использовать curl
$ curl --negotiate -u : -b ~/cookiejar.txt -c ~/cookiejar.txt http://localhost:14000/webhdfs/v1/?op=liststatus"--negotiate" опция включает SPNEGO
опция"-u" обязательна, но игнорируется (используется принцип, указанный во время kinit)
"-b" & "-C" параметры используются для хранения и отправки http cookies.