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

由于主机名不正确(GSSAPI身份验证),Kerberos LDAP绑定失败,ldap,kerberos,sasl,gssapi,Ldap,Kerberos,Sasl,Gssapi,我处理的问题是,我连接到用户提供的LDAP服务器,但有时服务器的主机名不可用。我在给定的时间内有IP地址或主机名 我可以从给定的主机名获取IP地址,但在my/etc/hosts中没有DNS映射可供我从IP地址获取主机名 我找不到任何方法来避免在身份验证过程中使用主机名,而只是继续使用IP地址。想看看这是否可行吗 我可以告诉kerberos跳过主机名,只使用IP地址进行身份验证吗 我尝试了中提供的大多数选项,但没有任何帮助我跳过主机名检查 context = LDAPConnectionPtr(n

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

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

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

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

我尝试了中提供的大多数选项,但没有任何帮助我跳过主机名检查

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,它必须是主机名。此外,除非有人永久性地使用,否则不能在脚本中进行交互式绑定。使用非交互式绑定,因此会出现错误

这在Python中非常有效:

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

否当提供有效主机名时,绑定函数正常工作。如果我尝试使用有效的ip、用户名、密码、领域、域和广告路径并插入一个虚拟主机名,它就会崩溃。另外,如果我在我的/etc/hosts中提到,并在krb5.conf中设置rdns=true,那么事情会按预期进行。但我可能并不总是在生产时映射反向DNS,因此我再次尝试仅使用IP地址,您不能使用IP地址,即使您在openldap中禁用反向DNS查找(至少是ldapsearch1),并且您不能提供主体和密码。Cyrus SASL不支持带有密码的gss_acquire_cred_。查看源代码,您将看到。您必须提供gss\u信用卡。