Active Directory不正确的密码尝试重复计算

时间:2009-06-18 15:03:48

标签: c# active-directory

我使用以下C#代码连接到活动目录并验证登录,

    DirectoryEntry de = new DirectoryEntry(); 
    string username = "myuser", path = "LDAP://addev2.dev.mycompany.com/CN=myuser,DC=dev,DC=mycompany,DC=com", password = "test";
    for (int i = 0; i < 4;i++ )
    {

        try
        {

            de.AuthenticationType = AuthenticationTypes.Sealing | AuthenticationTypes.Secure | AuthenticationTypes.FastBind;
            de.Username = username;
            de.Password = password;

            de.Path = path;

      //de.RefreshCache();
            Object obj = de.NativeObject;
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

当密码正确时,这可以正常工作。但是,如果密码不正确,则在AD中显示为2次无效尝试。 那么当AD管理员允许5次无效尝试时,用户在第3次尝试时被锁定,会发生什么。 当我查看AD的事件日志1时,看到2个条目。

1)预身份验证失败:

2)登录尝试:

MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
     Logon account: m0707b@dev.mycompany.com
     Source Workstation: WKSXXXX
     Error Code:    0xC000006A

逐步执行代码我在行上看到了2个事件条目

  de.RefreshCache()

我尝试使用de.NativeObject来查看是否可以解决问题。没有骰子

有人有任何指示吗?

2 个答案:

答案 0 :(得分:0)

您可以查看System.DirectoryServices.AccountManagement命名空间。您可以访问一个帐户,然后将其中的一个方法强制转换为DirectoryEntry对象。它可能会解决您的双重身份验证问题,并且更容易使用。

答案 1 :(得分:0)

当您使用格式username @ domain时,最终找到了这个令人困惑的问题的答案,IIS应用程序使用Kerebros一次使用2次调用,并且当使用NTLM失败导致双重计数时修复是使用以下格式进行身份验证域\用户名和修复问题。 http://support.microsoft.com/kb/264678/EN-US/