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

时间:2012-04-23 02:47:00

标签: c# login active-directory directoryservices

我是新来的,所以请耐心解释我。 我目前的任务是创建此AD门户登录页面,用户必须在其中输入用户ID和密码。

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

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

网络上显示的大多数示例都说明LDAP UserID和SAMAccountName使用相同的userID。但是,这不适用于我的情况。

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

    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;
    }

1 个答案:

答案 0 :(得分:2)

你做了很多假设,其中一些假设是不正确的。

是的,为了能够访问LDAP,您需要用户名和密码。而且很多样本都使用提供的凭据来对LDAP进行身份验证,以便......以及对LDAP进行身份验证。

问题是你不需要做任何这些。你说它是一个“AD门户”,我认为这意味着它是一个Web应用程序。因为你正在使用C#,我假设你正在使用asp.net。如果您使用的是asp.net,则可以使用ASP.NET成员资格系统对AD进行Windows身份验证进行身份验证。它或多或少都是“内置”的。

您无需执行LDAP查询。你的问题太复杂了。这非常简单。

除非你正在尝试做一些非常具体的事情,否则你真的会走错路径寻找一个简单的AD登录页面。

相关问题