私は、ASP.NET Webアプリケーションのアクティブディレクトリに対してユーザーを認証するために、hereというソリューションを使用しています。私はFormsAuthenticationと共に使用される単純なADMembershipProviderクラスを作成しました。ローカルでプロジェクトを実行するときにうまく動作しますが、ネットワーク内のサーバーに展開すると、ValidateUserコールには実際には長時間(約20秒)かかります。 PrincipalContext.ValidateUserを使用する際のパフォーマンスの問題
//Assumes using System.DirectoryServices.AccountManagement
public override bool ValidateUser(string username, string password) {
using (var context = new PrincipalContext(ContextType.Domain)) {
return context.ValidateCredentials(username, password);
}
}
私はPrincipalContextコンストラクタに
msdnに記載されているよう
名と
コンテナパラメータを追加しようとしましたが、これらのパラメータは一切影響を与えていないようです。
using (var context = new PrincipalContext(ContextType.Domain, "MyDomain", "OU=MyCompany,DC=some,DC=stuff")) {
return context.ValidateCredentials(username, password);
}
私たちのネットワークでは、少なくとも2つの異なるサーバーで同じ問題が発生しています。サーバーがADに接続されており、OSが動作しているWindows 2003 SP2(IIS6)
この問題は、ユーザーの検証時に関与します。しかし、私たちが検証しようとしているユーザーは排他的に「私たちの」広告に存在します。
あなたはIISUserまたはNetwork Serviceの下でサイト/アプリケーションプールを実行していますか? 後者の方が高速かもしれませんが、そのアカウントでサイトを実行することはお勧めしません。 – MarcelDevG
ありがとう、サイトはすでにネットワークサービスとして実行中です –
あなたがPrincipalContext()にNetBIOS名を渡しているためです。 DNSドメイン名を渡してみてください。 –