13

telnet(または他のプログラム)を介してLDAPサーバーへの接続を確立し、通常のHTTPの場合と同じように、要求の作成と応答の受信を開始できるかどうか疑問に思っています。実際、この質問はより一般的であり、ネットワーク接続と通信プロトコルについての私の誤解に関連しています。このトピックについて私が考えている考えをお話ししましょう。

すべてのアプリケーションプロトコルは、通信プロトコル(つまり、サーバーが理解し、配信時に動作するメッセージ)を定義します。アプリケーションプロトコルがどのように機能するかを知っていれば、サーバーへの接続を確立し(そのプロトコルをサーバー側で制御するデーモン)、サーバーとの通信を開始できます。たとえば、HTTPを使用すると、telnet経由でHTTPサーバーへの接続を確立し、次のような要求で彼と話し始めることができます。

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

私は、この手順がどのアプリケーションプロトコルでも発生することを期待しています。このコンセプトは正しいですか?

LDAPプロトコル仕様RFCを垣間見ましたが、メッセージの形式がわかりませんでした。つまり、HTTPプロトコル仕様のようなものを読むことを期待していました。しかし、それはあまりにも一般的でした。LDAP検索を行う方法の例を教えてください。

4

2 に答える 2

24

LDAP RFCは、LDAPメッセージがASN1でエンコードされることを指定しています。これは、メッセージが特別な形式に従った、テキストではなく特別な形式のバイナリデータであることを意味します。これにより、telnetを使用して手作業でladapクエリを作成することは非常に困難になります。

于 2012-07-18T20:37:53.703 に答える
2

コマンドラインの友達の助けを借りれば、ある程度できます:-)

これが単純なLDAPクエリの16進ダンプです-これは次と同等のことをします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)を照会することを前提としています。

于 2020-08-03T21:08:48.690 に答える