是否可以通过telnet发送LDAP“请求”?

时间:2012-07-18 20:27:11

标签: ldap network-protocols telnet

我想知道是否可以通过telnet(或其他程序)建立与LDAP服务器的连接,并开始发出请求和接收响应,就像我通常使用HTTP一样。事实上,这个问题更通用,与我对网络连接和通信协议的误解有关。让我告诉你我对这个话题的看法:

所有应用程序协议都定义了通信协议(即服务器将了解并根据其传递进行操作的消息)。如果我知道应用程序协议是如何工作的,我可以建立与服务器的连接(控制该协议服务器端的守护进程)并开始与服务器通信。例如,使用HTTP,我可以通过telnet建立与HTTP SERVER的连接,并开始与他讨论此请求,例如:

GET /users/pepito HTTP/1.1
Host: stackoverflow
Content-Type: text/html

我希望这个程序能够在任何应用程序协议中发生。这个概念是对的吗?

我瞥见了LDAP Protocol Specification RFC,但我不明白这些消息的格式。我的意思是,我期待阅读类似HTTP协议规范的内容;但它太普通了。您能举例说明如何进行LDAP搜索吗?

2 个答案:

答案 0 :(得分:21)

LDAP RFC指定LDAP消息是ASN1编码的。这意味着消息是特殊格式的二进制数据,而不是文本,遵循特殊格式。这使得用telnet手动编写ladap-queries非常困难。

答案 1 :(得分:1)

在某些命令行朋友的帮助下,您可以有所帮助:-)

这是一个简单的LDAP查询的十六进制转储-它相当于ldapsearch -x -b "" -s base objectclass=top

30 0c 02 01 01 60 07 02 01 03 04 00 80 00
30 2c 02 01 02 63 27 04 00 0a 01 00 0a 01 00 02 01 00 02 01 1e 01 01 00 a3 12 04 0b 6f 62 6a 65 63 74 63 6c 61 73 73 04 03 74 6f 70 30 00

将其保存到名为ldap.hexdump的文件中,然后可以使用nc:

xxd -r -p ldap.hexdump | nc ldapserver 389

如果要查看已解析的输出,可以使用unber:

xxd -r -p ldap.hexdump | nc ldapserver 389 | unber -m -

如果您由于某种原因不能使用ldapsearch并想使用nc或openssl来测试LDAP服务器是否正确响应,那么可能会派上用场。假定服务器接受匿名绑定以查询空的基本DN(根DSE)。