2

指定されたドメインにそのようなユーザー名が存在するかどうかを確認して、LDAP ユーザーを検証する必要があります。このために、私はこのコードを使用しています-

DirectoryEntry entry = new DirectoryEntry("LDAP://" + strDomainController);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "SAMAccountName=" + strUserName;
SearchResult result = searcher.FindOne();
return (result != null) ? true : false;

これは、プロジェクトでこの機能が必要な場合はいつでも参照して使用することを意図したクラス ライブラリのメソッドです。

これをテストするために、簡単なテスト アプリケーションを作成しました。テストは次のように行われます -

Console.WriteLine(MyClassLib.MyValidateUserMethod("UserName", "Domain",ref strError).ToString());

私が直面している問題は、testapp でテストすると正常に動作することですが、私のプロジェクトでは、同じ資格情報で同じメソッドを使用しようとすると、DirectoryEntryオブジェクトが"System.DirectoryServices.DirectoryServicesCOMException"例外をスローし、search.Filter失敗して ex = {"Logon をスローします。失敗: 不明なユーザー名またはパスワードが正しくありません。\r\n"} 例外。

私はなりすましを試みましたが、それは役に立ちません。どういうわけか、同じ方法が mytestapp で正常に機能し、私のプロジェクトでは機能しません。これらのアプリケーションは両方とも、ローカルの開発マシンにあります。私は何が欠けていますか?何か案は?

4

2 に答える 2

1

そのようなすべてのスレッドで見つけることができるほぼすべての解決策を試しましたが、それでも解決できませんでした。

私はすべてをやり直そうとしましたが、うまくいきました。プロジェクトではなくテストアプリで動作する責任があったのは、プロジェクトがネットワークの場所に保存され、テストアプリが PC のハードドライブに保存されていたためだと思います。

プロジェクトを PC のハード ドライブにコピーすると、プロジェクトで正常に動作し始めました。私の推測では、プロジェクトがネットワーク上にあったため、LDAP 検証に十分な権限が付与されていなかった可能性があります。

于 2010-05-21T14:47:21.813 に答える
0

テストアプリケーションと実際のアプリケーションが同じユーザーとして実行されているので、ADで同じ権限を持っていますか?DirectoryEntryオブジェクトによってスローされた例外はトラブルシューティングするのが難しいですが、それが私が最初にチェックすることです。Webアプリとデスクトップアプリのどちらのプロジェクトですか?Webアプリの場合、アプリプールを実行しているユーザーが必要な権限を持っていない可能性があります。

于 2010-05-13T07:16:44.610 に答える