2

Active Directory のユーザー名とパスワードがあり、C# を使用して Active Directory にログインしたいと考えています。Windowsフォームでこれを行うにはどうすればよいですか?

4

4 に答える 4

6

この質問は数年前のものです。この回答が将来人々に役立つことを願っています。これは私のために働いています:

次の参照を追加します。

  • System.DirectoryServices を使用します。
  • System.DirectoryServices.AccountManagement を使用して;

その後、アプリで次のコードを使用できます。

   PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOUR DOMAIN");
   bool Valid = pc.ValidateCredentials("User", "password");

Validと呼ばれる変数は、logIn が OK の場合にTrue値を表示します。

詳細については、このページにアクセスしてください。このページはstackOverFlowからのもので、 「MS Active Directory でログイン」に関する多くの情報が表示されます。

于 2014-02-18T17:20:46.470 に答える
4

どうぞ。このメソッドはActiveDirectoryusername/passwordに対して検証され、かなり前から関数のツールボックスの一部でした。

//NOTE: This can be made static with no modifications
public bool ActiveDirectoryAuthenticate(string username, string password)
{
    bool result = false;
    using (DirectoryEntry _entry = new DirectoryEntry())
    {
        _entry.Username = username;
        _entry.Password = password;
        DirectorySearcher _searcher = new DirectorySearcher(_entry);
        _searcher.Filter = "(objectclass=user)";
        try
        {
            SearchResult _sr = _searcher.FindOne();
            string _name = _sr.Properties["displayname"][0].ToString();
            result = true;
        }
        catch
        { /* Error handling omitted to keep code short: remember to handle exceptions !*/ }
    }

    return result; //true = user authenticated!
}

これを実行するソフトウェアは、明らかにドメイン内のコンピューターで実行する必要があります(または、資格情報を認証するActive Directoryがない場合)。

于 2012-07-26T08:49:00.957 に答える
4

解決

Active Directory への接続は非常に簡単です。

DirectoryEntry(ネームスペース内の) オブジェクトを使用する必要がありますSystem.DirectoryServices

このオブジェクトのコンストラクターは、パラメーターで 3 つの文字列を受け取ります。

  • Active Directory へのパス。このパスの形式は次のとおりです。LDAP://your-name-AD
  • 接続のユーザー名
  • 対応するパスワード

using System.DirectoryServices;

try
{
   DirectoryEntry Ldap = new DirectoryEntry("LDAP://your-name-AD", "Login", "Password");
}
catch(Exception Ex)
{
   Console.WriteLine(Ex.Message);
}
于 2012-07-26T08:24:27.180 に答える
0

より短い答えは、参照 System.DirectoryServices.AccountManagementを追加することです

次に、 UserPrincipal.Current.Context.ValidateCredentials("username", "password"); を使用します。

ただし、検証するドメインに参加する必要があると思います。

于 2016-01-12T06:05:45.203 に答える