次のように、DirectoryEntry/DirectorySearcher を使用して LDAP クエリを実行し、C# Web アプリを介して Active Directory でユーザーを認証しています (ConnectionString プロパティは LDAP://server.domain と同等です)。
internal bool AuthenticateUser(string username, string password)
{
if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
return false;
var entry = new DirectoryEntry(this.ConnectionString, username, password);
var searcher = new DirectorySearcher { SearchRoot = entry, Filter = "(objectclass=user)" };
try
{
var result = searcher.FindOne();
return true; //connection to AD succeeded, authentication was successful
}
catch (DirectoryServicesCOMException)
{
return false; //impersonating the user failed
}
}
これらのクエリはすべて SBS サーバーにヒットし、新しいユーザーを作成すると、Windows 2000 以前 (つまり NetBIOS) の名前に大文字の値を使用しているように見えます。そのため、「Test User」という新しいユーザーを追加すると、ユーザー名は「tuser」になりますが、指定された NetBIOS 名は「TUser」になります。ユーザーがこのメソッドにヒットするユーザー/パスを入力すると、「tuser」は認証に失敗しますが、「TUser」は成功します。
私の質問は、ユーザー名で大文字と小文字を区別する必要がないように、これを変更できるかどうかです。