0

我必须找到一种方法如何使用公司 Active Direcotries 来登录用户,我不确定是否有某种方法可以在没有管理员凭据(匿名)的情况下进行连接 - 如果用户存在,我只需要搜索用户。

我尝试了很多解决方案,但还没有奏效。我是 AD 和 ASP.NET 的新手(但我曾经用 Java 进行编程)。

到目前为止,我使用的代码来自 MSDN 网站:

        DirectoryEntry entry = new DirectoryEntry(_path);

        try
        {
            //Bind to the native AdsObject to force authentication.
            object obj = entry.NativeObject;

            DirectorySearcher search = new DirectorySearcher(entry);

            search.Filter = "(sAMAccountName=" + username + ")";
            search.PropertiesToLoad.Add("cn");
            SearchResult result = search.FindOne();


            if (null == result)
            {
                return false;
            }

            //Update the new path to the user in the directory.
            _path = result.Path;
            _filterAttribute = (string)result.Properties["cn"][0];
        }
        catch (Exception ex)
        {
            throw new Exception("Error authenticating user. " + ex.Message);
        }

        return true;

路径是可变的,链接到 LDAP (LDAP:///rootDSE)

主要问题是如果我正确连接到 AD,我将无法追踪。结果以 null 结尾,但我确信我使用正确的凭据进行测试。

任何人都可以提供帮助或提供建议

非常感谢

4

1 回答 1

0

你可以过去

主体上下文

像这样:

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, myDomainTextBox.Text))
{
    // validate the credentials
    bool cIsValid = pc.ValidateCredentials(myUserNameTextBox.Text, myPasswordBox.Password);

    if (cIsValid)
    {
        // Do some stuff
    }
}
于 2013-08-09T12:48:03.653 回答