Это мой первый опыт попытки подключиться к API через python (из окон) с использованием аутентификации Kerberos.Я работал над этим в течение нескольких дней, и мой прогресс застопорился.Вот лишь некоторые из ссылок, которые я использовал:
Это лучшее учебное пособие, которое я нашел, но, похоже, оно использует устаревший модуль, а неquesbskeros: http://python -notes.curiousefficiency.org / ru / latest / python_kerberos.html
https://pypi.org/project/requests-kerberos/
https://programtalk.com/python-examples/requests_kerberos.HTTPKerberosAuth/
Вот то, что я пробовал до сих пор (я будумаскировать конфиденциальную информацию):
import requests
from requests_kerberos import HTTPKerberosAuth
r=requests.get("https://apiServer.hadoop.company.com:23232/templeton/v1/ddl/database/",auth=HTTPSKerberosAuth)
Вот некоторые выходные данные:
r.status_code
401
r.headers
{'Content-Length ':' 1321 ',' Set-Cookie ':' hadoop.auth =;Path = /;HttpOnly ',' Server ':' Jetty (7.6.0.v20120127) ',' Cache-Control ':' must-revalidate, no-cache, no-store ',' Content-Type ':' text / html; charset= ISO-8859-1 ',' WWW-Authenticate ':' Обсудить '}
<code>r.text
<html>\n<head>\n<meta http-equiv="Content-Type"
content="text/html;charset=ISO
-8859-1"/>\n<title>Error 401 Authentication
required</title>\n</head>\n<body>\n<
h2>HTTP ERROR: 401</h2>\n<p>Problem accessing /templeton/v1/ddl/database/.
Reason:\n<pre> Authentication required
\ n
Powered by Jetty: // Указывает ли хоть что-нибудь из этого вывода, что сервер получает мой запрос?
Если я подключаюсь к API из нашей среды linux, используя curl, он работает просто отлично, и я получаю ожидаемый результат:
curl --negotiate -i -u : 'http://apiServer.hadoop.company.com:23232/templeton/v1/ddl/database/'
HTTP / 1.1 401 Требуется аутентификация WWW-Authenticate:Согласовать Set-Cookie: hadoop.auth =;Path = /;HttpOnly Cache-Control: необходимо повторно подтвердить, без кэширования, без хранения Тип содержимого: text / html; charset = ISO-8859-1 Длина содержимого: 1321 Сервер: Jetty (7.6.0.v20230127)
HTTP / 1.1 200 OK WWW-Authenticate: согласование YGY1cwVaADAgCAQ + iSTBHoAMCAReiQAQ + SF / nekePw09B / cboDrINa7qn + aENRuw2V + OW7Y7Rk9pOwGa8hrXC3rXKxCk = Set-Cookie: hadoop.auth = "и = SVC-QA-dsafqa-DEV & р = SVC-FD-itdflea-dev@hadoop.company.com&t=kerberos&e=15392343251&s=nWk/bFDbHQfsadfewe8PtjAsVHs= ";Path = /;HttpOnly Content-Type: application / json Transfer-Encoding: chunked Сервер: Jetty (7.6.0.v20120127)
Я понимаю, что в моем фундаментальном понимании аутентификации kerberos есть пробел, и япытаюсь провести ускоренный курс, но мне действительно просто нужно иметь возможность подключиться к этому API.Любая помощь с благодарностью.