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

时间:2019-07-01 15:04:02

标签: ldap kerberos sasl gssapi

我正在处理一个问题,其中我连接到用户提供的LDAP服务器,但有时主机名不适用于该服务器。我要么在n个时间都获得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

1 个答案:

答案 0 :(得分:1)

您不能将IP地址与Kerberos一起使用,它必须是主机名。而且,除非有人永久使用脚本,否则您不会在脚本中进行交互式绑定。使用非交互式绑定(因此会看到错误)。

这在Python中非常有效:

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