Novell がリリースしたライブラリ (Novell.Directory.Ldap) を使用しようとしています。バージョン 2.1.10。
私がこれまでに行ったこと:
アプリケーション(LdapBrowser)との接続をテストしましたが、動作しているため、通信の問題ではありません。
Mono でコンパイルされていますが、Visual Studio で作業しています。そのため、ソースを使用してプロジェクトを作成しました。プロジェクトが Mono.Security に依存していたため、Mono.Security への参照も含めました。
より多くの例外をスローしていたため、接続の一部をキャッチするエラーで呼び出し (freeWriteSemaphore(semId); ) にコメントしました。その呼び出しが何をしたかを確認しましたが、それは単なるエラー追跡メカニズムです。
Novell のドキュメント ( http://www.novell.com/coolsolutions/feature/11204.html )に記載されている基本的な手順に従いました。
// LdapConnection インスタンスの作成
LdapConnection ldapConn= 新しい LdapConnection(); ldapConn.SecureSocketLayer = ldapPort == 636;
//Connect 関数はサーバーへのソケット接続を作成します
ldapConn.Connect(ldapHost,ldapPort);
//Bind 関数は、ユーザー オブジェクト資格情報をサーバーにバインドします
ldapConn.Bind(userDN,userPasswd);
現在、Bind() 関数でクラッシュしています。エラー 91 が表示されます。
では、誰かがこのライブラリを使用して動作するのを見たことがありますか? もしそうなら、それを機能させるために何をしましたか?特別な設定が必要ですか? Mono を使用せずに .NET 環境で動作させる方法はありますか (Mono dll を参照することはできますが、サーバーにインストールしたくありません)。
(更新) 接続はポート 636 で行われるため、SSL を使用します。WireShark で通信を確認し、LDAP Browser から取得したものと比較しました。SSL証明書が通信されるステップがLDAPライブラリによって行われていないことがわかりました。では、本来の目的を果たすための最良の方法は何ですか?
(更新) ドキュメントを確認したところ、SSL をサポートしていないことが示されています。http://www.novell.com/coolsolutions/feature/11204.html
LdapConnection.Bind() を使用して LDAP サーバーに対して認証します。クリアテキスト認証のみをサポートしています。SSL/TLS サポートはまだ追加されていません。
ただし、ドキュメントの日付は 2004 年であり、それ以来、多くの更新が行われています。ライブラリには、接続で SSL を使用するかどうかを定義するパラメーターがあります。だから今、私は混乱しています。
(更新) より最新のドキュメントを見つけました: http://developer.novell.com/documentation//ldapcsharp/index.html?page=/documentation//ldapcsharp/cnet/data/bqwa5p0.html . SSL 接続を確立する方法は、サーバーに証明書を登録することです。問題は、私がやっていることは特定の Novell サーバーにバインドされていないため、証明書を動的に取得する必要があることです。