C# 使用SAMAccountName对用户进行身份验证

C# 使用SAMAccountName对用户进行身份验证,c#,login,active-directory,directoryservices,C#,Login,Active Directory,Directoryservices,我是新来的,请耐心听我解释。 我目前的任务是创建这个广告门户登录页面,用户必须输入他们的用户名和密码 然而,由于我在网上做了很多搜索,我发现无法同时使用UserID和Password对用户进行身份验证,因为SAMAccountName只需要UserID 这里需要验证的用户不是我用于LDAP连接登录的用户。LDAP连接将始终使用相同的管理员ID和密码,而我必须验证的用户是不同的用户 web上显示的大多数示例说明LDAP用户ID和SAMAccountName使用相同的用户ID。然而,这不适用于我的情

我是新来的,请耐心听我解释。 我目前的任务是创建这个广告门户登录页面,用户必须输入他们的用户名和密码

然而,由于我在网上做了很多搜索,我发现无法同时使用UserID和Password对用户进行身份验证,因为SAMAccountName只需要UserID

这里需要验证的用户不是我用于LDAP连接登录的用户。LDAP连接将始终使用相同的管理员ID和密码,而我必须验证的用户是不同的用户

web上显示的大多数示例说明LDAP用户ID和SAMAccountName使用相同的用户ID。然而,这不适用于我的情况

因此,我想问。是否可以使用SAMAccountName验证用户的用户名和密码?希望您能够提供一个代码示例,因为与这里的大多数人相比,我不是一个经验丰富的程序员。谢谢

    public SearchResult GetADUser(string UserID, string Password)
    {
         SearchResult results;

         try
         {
               DirectoryEntry de = GetDirectoryObject(CommonConstant.LDAP_CONNECTION_STRING);
               de.Username = CommonConstant.AD_ADMIN_ID;
               de.Password = CommonConstant.AD_ADMIN_Password;

               DirectorySearcher deSearch = new DirectorySearcher();
               deSearch.SearchRoot = de;

               deSearch.Filter = "(&(objectClass=user)(objectCategory=person)(samaccountname=" + UserID + "))";
               deSearch.SearchScope = SearchScope.Subtree;
               results = deSearch.FindOne();
          }
          catch (Exception ex)
          {
               throw new Exception(String.Format("GetADUser() returned {0}, \"{1}\"", ex.StackTrace, ex.Message));
          }

          return results;
    }

你做了很多假设,其中一些假设根本不正确

是的,要访问LDAP,确实需要用户名和密码。确实,许多示例使用提供的凭据对LDAP进行身份验证,以便。。那么,根据LDAP进行身份验证

问题是你不需要做这些。你说它是一个“广告门户”,我想这意味着它是一个web应用程序。既然您使用的是C#,我假设您使用的是asp.net。如果您使用的是asp.net,那么您可以简单地使用asp.net成员资格系统使用Windows身份验证对AD进行身份验证。它或多或少是“内置的”

您不需要执行LDAP查询。你把问题复杂化了。这很简单


除非您正在尝试做一些非常具体的事情,否则对于一个简单的广告登录页面,您确实走错了路。

我有相关的问题,不过我是初学者。。。。如果存在子域(childa、abc.com childb.abc.com、childc.abc.com)且包含相同的samaccountname(123456789),广告将如何进行身份验证??是否要逐个检查子域,以便对用户进行身份验证??我的应用程序仅使用samaccountname作为登录id。每个子域中此samaccount的密码有什么不同??