Быть одноразовым участником curl
в этой области. Вот что вам нужно знать:
curl(1)
сам ничего не знает о Kerberos и не будет взаимодействовать ни с вашим кешем учетных данных, ни с вашим файлом keytab. Он будет делегировать все вызовы реализации GSS-API, которые сделают вам волшебство. Какая магия зависит от библиотеки, Heimdal и MIT Kerberos.
Основываясь на вашем вопросе, я предполагаю, что у вас мало знаний о Kerberos и вы хотите просто автоматизировать обращения API к конечным точкам REST, защищенным SPNEGO.
Вот что вам нужно сделать:
- Есть Unix-подобной ОС
- Установка по крайней мере, MIT Kerberos 1,11
- Установите по крайней мере
curl
7.38.0 против MIT Kerberos
- Проверьте это с
curl --version
с упоминанием GSS-API и SPNEGO и с ldd
, связанным с вашей версией MIT Kerberos.
- Создание клиента Keytab для основного сервиса с
ktutil
или mskutil
- Try, чтобы получить TGT с этим клиента Keytab по
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 пытается получить действительный билет ** в кеше ** (ср., Переменная env 'KRB5CCNAME' или по умолчанию' FILE:/tmp/krb5cc _ $ (id -u) 'в Unix /' API: 'on Windows) - все равно, как был создан билет. –
Предостережение: версии curl для Windows скомпилированы для поддержки библиотек Microsoft SSPI, а не библиотек GSSAPI, которые требуются службами Hadoop REST. –
BTW a keytab - это файл, содержащий хешированный пароль, созданный 'ktutil' на Linux или утилитой Active Directory, например' ktpass.exe'. ** ** используется ** kinit', а не ** созданный **. –