コンソール アプリケーションを使用してテスト コードを記述します。
/// <summary>
/// Returns AD information for a specified userID.
/// </summary>
/// <param name="ntID"></param>
/// <returns></returns>
public ADUser GetUser(string ntID)
{
DirectorySearcher search = new DirectorySearcher();
search.Filter = String.Format("(cn={0})", ntID);
search.PropertiesToLoad.Add("mail");
search.PropertiesToLoad.Add("givenName");
search.PropertiesToLoad.Add("sn");
search.PropertiesToLoad.Add("displayName");
search.PropertiesToLoad.Add("userPrincipalName");
search.PropertiesToLoad.Add("cn");
SearchResult result = search.FindOne();
return new ADUser(result);
}
そして、これはコンソールアプリからうまくいきました。しかし、ASP.NET アプリケーションに移動すると、正しいドメインがわからないというエラー メッセージが表示されました。
ASPNET アカウントで実行しているときに AD にアクセスするために欠けているトリックはありますか?
EDIT : 実際のログイン/パスワードが必要なため、 LDAP://domain 接続文字列を渡すだけでは十分ではありません。これはマシンのローカル アカウントで実行されるため、どの AD L/P を使用すればよいかわかりません。アクセスしているユーザー アカウントをこれに委任できますか?
編集 #2 : ID の偽装を使用しようとすると、次のような DirectoryServicesCOMException が発生します。