【问题标题】:Searching through Active Directory in C# and authenticate with current User在 C# 中搜索 Active Directory 并使用当前用户进行身份验证
【发布时间】:2015-01-12 12:09:39
【问题描述】:

我想做什么:

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

我已经拥有的(C# 代码,.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 吗?

【问题讨论】:

标签: c# asp.net active-directory


【解决方案1】:

DirectorySearcher ds = new DirectorySearcher(de);

如果当前用户有访问权限,如果没有,你会得到一个例外。

【讨论】:

  • 嗨,Alfredo,看起来 OP 正在使用 DirectorySearcher 对象。您的回答如何帮助按照他们的要求向 AD 进行身份验证?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多