由于主机名不正确(GSSAPI 身份验证),Kerberos LDAP 绑定失败

Kerberos LDAP bind fails due to incorrect hostname (GSSAPI authentication)

我正在处理一个问题,我连接到用户提供的 LDAP 服务器,但有时服务器的主机名不可用。我在给定的时间有 IP 地址或主机名。

我能够从给定的主机名中获取 IP 地址,但是我的 /etc/hosts 中没有 DNS 映射可供我从 IP 地址中获取主机名

我找不到任何方法来避免在身份验证过程中使用主机名,只能继续使用 IP 地址。想看看这是否可行?

我可以告诉 kerberos 跳过主机名,只使用 IP 地址进行身份验证吗?

我尝试了 https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html#domain-realm 中提供的大部分选项,但没有任何方法可以帮助我跳过主机名检查。

context = LDAPConnectionPtr(new LDAPConnection(authSrv.getIP(), authSrv.getPort()));
context->saslInteractiveBind("GSSAPI", LDAP_SASL_INTERACTIVE, new Sasl());

以下是我面临的错误

SASL/GSSAPI authentication started
Sasl::handleInteractions()
SASL Prompt: Please enter your authorization name
Caught LDAP Bind exception: Error -2: Local error

您不能将 IP 地址用于 Kerberos,它必须是主机名。此外,除非有人永久使用它,否则您不会在脚本中进行交互式绑定。使用 non-interactive 绑定(因此出现错误)。

这在 Python 中非常有效:

url = 'ldap://ad.company.com'
directory = ldap.initialize(url)
directory.set_option(ldap.OPT_PROTOCOL_VERSION, ldap.VERSION3)