ldap - 由于不正确的主机名(GSSAPI 身份验证),Kerberos LDAP 绑定失败
问题描述
我正在处理一个问题,即我连接到用户提供的 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
解决方案
您不能将 IP 地址与 Kerberos 一起使用,它必须是主机名。此外,除非人类永久使用它,否则您不会在脚本中进行交互式绑定。使用非交互式绑定(因此您会看到错误)。
这在 Python 中完美运行:
url = 'ldap://ad.company.com'
directory = ldap.initialize(url)
directory.set_option(ldap.OPT_PROTOCOL_VERSION, ldap.VERSION3)
推荐阅读
- java - 如何将数据添加到 java swing 表中的新行?
- python - tensorflow gpu 测试通过——但我没有安装 cuDNN
- c - 如何将字符串复制到另一个变量并使用 if else 语句输出
- ruby-on-rails - 课程中的 ActionController::UrlGenerationError#index
- node.js - 将 nginx 作为独立于客户端应用程序容器的自己的容器运行
- javascript - webpack 对我说 UnhandledPromiseRejectionWarning
- python - Django Sphinx 编译错误:未找到 index.rst 和警告:未知指令
- docker - docker 未启动且失败并出现错误,无法启动 docker.service: Unit not found
- python-3.x - 我必须用我的代码检查字符串验证器,但大写显示错误的结果
- javascript - 未捕获的类型错误:将 useReducer 与 useContext 用于全局存储 React js 时,对象不可迭代