在C#中搜索Active Directory并使用当前用户进行身份验证

时间:2015-01-12 12:09:40

标签: c# asp.net active-directory

我想做什么:

用户使用其用户凭据登录我的应用程序。表单只输入一个pNumber,应用程序应搜索活动目录以查找具有该编号的用户并自动填写不同的输入字段(在此示例中仅显示名称和电子邮件)。

我已经拥有的(C#Code,.Net 4.0):

public static string[] getUser(string pNumber) {
        string[] user = new string[4];
        NetworkCredential credential = CredentialCache.DefaultNetworkCredentials;
        string userName = System.Security.Principal.WindowsIdentity.GetCurrent().Name;

        string DomainPath = "LDAP://DC=****,DC=com";
        string strAccountId = userName;
        string strPassword = "******";
        DirectoryEntry adsEntry = new DirectoryEntry(DomainPath, strAccountId, strPassword);
        DirectorySearcher adsSearcher = new DirectorySearcher(adsEntry);

        adsSearcher.Filter = "(pNumber=" + pNumber + ")";

        SearchResult adsSearchResult = adsSearcher.FindOne();

        if (adsSearchResult != null) {
            user[0] = adsSearchResult.Properties["sAMAccountName"][0].ToString();
            user[1] = adsSearchResult.Properties["mail"][0].ToString();
        }

        return user;
    }

如果我输入strAccountId和strPassword的值,我知道可以访问AD,这可以正常工作。但这只是一种解决方法。我想使用当前用户凭据向AD进行身份验证。我可以获得当前用户名,但我认为无法获取密码。因此,我查看了其他可用DirectoryEntry here进行身份验证的可能性。 (我真正得到的是DirectoryEntry(Object)构造函数)

我的问题:

我是否可以使用当前用户凭据使用C#搜索AD?

1 个答案:

答案 0 :(得分:0)

DirectorySearcher ds =新的DirectorySearcher(de);

如果当前用户具有访问权限,那么您将获得例外。