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



正在处理我连接到用户提供的LDAP服务器的问题,但有时hostname无法用于服务器。我要么在给予n时间为ip地址或主机名。

可以从给定的主机名获取IP地址,但是我的/etc/主机中没有可用的DNS映射可以从IP地址获得主机名

我找不到任何方法可以避免在身份验证过程中使用主机名,而只需进行IP地址即可。想检查是否可能?

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

我尝试了https://web.mit.edu/kerberos/krb5-1.12/doc/admin/conf_files/krb5_conf.html#domain-realm中提供的大多数选项。/p>

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

您不能与kerberos一起使用IP地址,它必须是主机名。更重要的是,除非人类永久使用它,否则您不会在脚本中互动绑定。使用非交互绑定(因此您看到的错误(。

这在python中完美地工作:

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

最新更新