Получение GSSException: обнаружен дефектный токен при вызове HDFS API в кластере с керберизацией - PullRequest
0 голосов
/ 30 мая 2018

У меня есть Kerberised CDH v5.14 кластер с 3 узлами. Я пытаюсь вызвать HDFS API, используя python, как показано ниже

baseurl = "http://<host_name>:50070/webhdfs/v1/prod/?op=LISTSTATUS"

__, krb_context = kerberos.authGSSClientInit("HTTP/<host_name>")
#kerberos.authGSSClientStep(krb_context, "")
negotiate_details = kerberos.authGSSClientResponse(krb_context)
headers = {"Authorization": "Negotiate " + str(negotiate_details)}
r = requests.get(baseurl, headers=headers)
print r.status_code

Возвращается ошибка ниже

GSSException: Defective
token detected (Mechanism level: GSSHeader did not find the right tag)

HTTP ERROR 403

Но то же самое прекрасно работает, когда я запускаю его, используя curl

curl -i --negotiate -u: http://<host_name>:50070/webhdfs/v1/prod/?op=LISTSTATUS

HTTP / 1.1 401 Требуется аутентификация Cache-Control: must-revalidate, no-cache, no-storeДата: среда, 30 мая 2018 года 02:50:04 GMT Прагма: без кэширования Дата: среда, 30 мая 2018 года 02:50:04 GMT Прагма: без кэширования Тип содержимого: text / html;charset = iso-8859-1 X-FRAME-OPTIONS: SAMEORIGIN WWW-Authenticate: согласовать Set-Cookie: hadoop.auth =;Path = /;HttpOnly Content-Length: 1409

HTTP / 1.1 200 OK Cache-Control: no-cache Истекает: Ср, 30 мая 2018 02:50:04 GMT Дата: Ср, 30 мая 2018 02:50:04 GMTPragma: no-cache Срок действия истекает: ср., 30 мая 2018 г. 02:50:04 GMT Дата: ср., 30 мая 2018 г. 02:50:04 GMTWWW-Authenticate: согласование YGYGCSqGSIb3EgECAgIAb1cwVaADAgEFoQMCAQ + iSTBHoAMCAReiQAQ + 6Seu0SSYGmoqN4hdykSQ55ZcP + juBO / jk8 / BGjoK5NCmdlBRFPMSbCZXvVjNHLg9iPACGvM8V0jqXTM5UfQ = Set-Cookie: hadoop.auth = "и = XXXX & р = XXXX @ имя_машина & т = & й Керберос = 1527684604664 & s = tVsrEsDMBGV0To8hOPp8mLxyiSo =";Path = /;HttpOnly Transfer-Encoding: chunked

и он дает правильный ответ, что мне здесь не хватает?Любая помощь приветствуется.

...