Как я могу генерировать правильный токен Spnego из существующего токена Kerberos с помощью Pyspnego?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу генерировать правильный токен Spnego из существующего токена Kerberos с помощью Pyspnego?

Сообщение Anonymous »

Я пытаюсь решить проблему доступа к сервису (HTTP) с использованием механизма делегирования с ограниченным с ограниченными возможностями. Кажется, что я правильно формирую билет Kerberos, но в то же время, глядя на его формат ASN.1, я не нахожу поддержку механизма Spnego. и сервер не может распознать этот билет, когда он передается в разрешении: заголовок переговоров. Я пытался использовать библиотеку Pyspnego, но, очевидно, я не эксперт в ней. < /P>
import gssapi
from gssapi import RequirementFlag, MechType
import os
import base64
import requests
import argparse
import gssapi.raw as gssapi_raw
import spnego

# parse argument
parser = argparse.ArgumentParser()
parser.add_argument('client_user', help='Client user principal')
args = parser.parse_args()

#Settings

realm = "REGION.INTRA.NET"
keytab = "/etc/httpd/conf.d/t_hrkrbtest.keytab"
server_principal = 'HOST/t_hrkrbtest.' + realm.lower() + '@' + realm
client_user = args.client_user # Use receive arg
target_service = 'HTTP/sap3.' + realm.lower() + '@' + realm

#Set keytab

os.environ["KRB5_KTNAME"] = keytab

# === Exist keytab ===

if not os.path.exists(keytab):
raise FileNotFoundError(f"Keytab not found: {keytab}")

#print(">>> Check principals in keytab:")
kt = gssapi_raw.acquire_cred_from({
'keytab': keytab.encode('utf-8')
}, usage='accept')
#print("Principal:", kt[0])

try:
server_name = gssapi.Name(server_principal, name_type=gssapi.NameType.kerberos_principal)
creds = gssapi.Credentials(name=server_name, usage="initiate")

except Exception as e:
print(f"Error getting TGT from keytab: {e}")
exit(1)

#print(">>> S4U2Self")

try:
user_name = gssapi.Name(client_user, name_type=gssapi.NameType.kerberos_principal)
creds = gssapi.Credentials(usage='initiate')
impersonated_creds = creds.impersonate(user_name)
# print(f"Success S4U2Self {client_user}")

except Exception as e:
print(f"Error S4U2Self: {e}")

try:
target_name = gssapi.Name(target_service, name_type=gssapi.NameType.kerberos_principal)

# ctx = gssapi.SecurityContext(name=target_name, creds=impersonated_creds, mech=MechType.kerberos, flags=RequirementFlag.delegate_to_peer |
# RequirementFlag.identify |
# RequirementFlag.mutual_authentication, usage="initiate")
ctx = gssapi.SecurityContext(name=target_name, creds=impersonated_creds, mech=MechType.kerberos, usage="initiate")
token = ctx.step()
ctx1 = spnego.client(hostname="sap3.intra.net", service="HTTP", protocol="negotiate")
out_token = ctx1.step(token)

b64_ticket = base64.b64encode(out_token).decode('utf-8')
print(b64_ticket)

except Exception as e:
print(f"Error S4U2Proxy: {e}")
exit(1)
< /code>
Как я могу добавить механизм spnego в токен в текущем билете
< /p>

Подробнее здесь: https://stackoverflow.com/questions/796 ... sing-pyspn
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как я могу генерировать правильный токен Spnego из существующего токена Kerberos с помощью Pyspnego?
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Генерировать токен spnego kerberos для аутентификации Windows
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Генерировать токен spnego kerberos для аутентификации Windows
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Создайте токен SPNEGO Kerberos для проверки подлинности Windows IIS.
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Создайте токен SPNEGO Kerberos для проверки подлинности Windows IIS.
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»