Общая цель: я пытаюсь пройти аутентификацию в Active Directory через LDAP с Kerberos в Windows.Из-за зависимостей я не могу использовать python-ldap
или python-gssapi
, поэтому я использую ldap3
с патчем , найденным в этом ответе , чтобы использовать Kerberos (вместо winkerberos
из python-gssapi
).
Пример кода:
from ldap3 import Connection, Server, ALL, IP_V4_PREFERRED, SASL, GSSAPI
domain_controller = input("DC: ")
SERVER = Server(domain_controller,
allowed_referral_hosts=[('*', True)],
get_info=ALL,
mode=IP_V4_PREFERRED)
CONNECTION = {"authentication": SASL,
"sasl_mechanism": GSSAPI,
"check_names": True}
c = Connection(SERVER, **CONNECTION)
c.bind()
Броски:
File "ldap3\core\connection.py", line 550, in bind
response = self.do_sasl_bind(controls)
File "ldap3\core\connection.py", line 1252, in do_sasl_bind
result = sasl_gssapi(self, controls)
File "ldap3\protocol\sasl\kerberos.py", line 54, in sasl_gssapi
base64.b64encode(in_token).decode('ascii')
winkerberos.GSSError: SSPI: InitializeSecurityContext: The specified target is unknown or unreachable
Я пытался изменить @
с /
на решение здесь без разницы.Сокет правильно разрешает dc fqdn, dc поддерживает механизм SASL / GSSAPI, и я могу альтернативно передать имя пользователя / пароль для успешного связывания.Неисправная часть звучит специфично для Kerberos.
Вопрос: что является причиной этой ошибки и как ее исправить?