Я пробовал использовать Request_kerberos разными способами, но не удалось:
Код: Выделить всё
from requests_kerberos import HTTPKerberosAuth
auth = HTTPKerberosAuth()
requests.get("https://yarn-hostname:443/gateway/yarn_gateway_realm/yarn/ws/v1/cluster/apps?user=some_specific_user, verify=False, auth=auth)
Код: Выделить всё
from requests_kerberos import HTTPKerberosAuth
from spnego import KerberosCCache
auth = HTTPKerberosAuth(principal=KerberosCCache(ccache="/path/to/my_user/cache"))
requests.get("https://yarn-hostname:443/gateway/yarn_gateway_realm/yarn/ws/v1/cluster/apps?user=some_specific_user, verify=False, auth=auth)
Код: Выделить всё
from requests_kerberos import HTTPKerberosAuth
environ["KRB5CCNAME"] = "/path/to/my_user/cache"
auth = HTTPKerberosAuth()
requests.get("https://yarn-hostname:443/gateway/yarn_gateway_realm/yarn/ws/v1/cluster/apps?user=some_specific_user, verify=False, auth=auth)
Also tried generating a authorization key:
Код: Выделить всё
import krb5
import requests
import spnego
import base64
def generate_kerberos_auth_header(cache_file: str, url: str):
client = spnego.client("HTTP/my-yarn-hostname.com@MYREALM", credentials=[spnego.KerberosCCache(ccache=cache_file)])
in_token = None
out_token = client.step(in_token)
auth_header = f'Negotiate {base64.b64encode(out_token).decode()}'
print(f"auth_header={auth_header}")
return auth_header
def send_request_with_kerberos(url: str, cache_file: str):
headers = {
'Authorization': generate_kerberos_auth_header(cache_file, url)
}
response = requests.get(url, headers=headers)
return response
Я уже подтвердил, что файл кэша существует и имеет рабочие учетные данные с неистекшим сроком действия, используя klist .
Есть ли какой-нибудь способ добиться того, чего я пытаюсь сделать?
Подробнее здесь: https://stackoverflow.com/questions/790 ... eros-cache