openldap : ldapsearch ldap_bind: 凭证无效 (46)

时间:2021-07-27 17:40:30

标签: docker ldap openldap

我正在尝试从主机到容器的 ldapsearch,但它不起作用。

我开始于:

docker run --env LDAP_ORGANISATION="OpenLdap" --env LDAP_DOMAIN="example.org" --env LDAP_ADMIN_PASSWORD="admin" -p 389:389 -p 636:636 --name openldap --detach osixia/openldap:1.5.0 

然后这有效:

$ docker exec openldap ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin
# extended LDIF
#
# LDAPv3
# base <dc=example,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# example.org
dn: dc=example,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: OpenLdap
dc: example

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

但这在直接从主机执行时不会:

ldapsearch -x -H ldap://localhost -b dc=example,dc=org -D "cn=admin,dc=example,dc=org" -w admin

结果:

ldap_bind: Invalid credentials (49)

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我在本地系统上对此进行了测试,并使用更正的 docker run 命令行...

docker run \
  --env LDAP_ORGANISATION="OpenLdap" \
  --env LDAP_DOMAIN="example.org" \
  --env LDAP_ADMIN_PASSWORD="admin" \
  -p 389:389 \
  -p 636:636 \
  --name openldap \
  --detach osixia/openldap:1.5.0 

...我可以在内部和外部成功运行您的 ldapsearch 命令 容器外。你看到的行为表明,当 您在主机上运行 ldapsearch,它没有连接到 您在容器内使用的同一个 ldap 服务器。

您需要检查是否有其他东西在监听 389 端口 你的系统。在 Linux 下,您可以通过运行 netstat -tln; 如果您使用的是 Windows,则等效命令为 netstat -aon

如果你发现有其他东西正在监听 389 端口,你的选择是 (a) 终止它或 (b) 将容器化服务映射到不同的端口。

相关问题