LDAP查找组时将身份验证传递给PrincipalContext

本文关键字:PrincipalContext 身份验证 查找 LDAP | 更新日期: 2023-09-27 18:03:48

当我的机器是域的成员并登录时,我有以下代码可以正常工作,但是当我使用不在域上的PC时,它不起作用。我知道用户的用户名和密码,因为他们事先使用pc.ValidateCredentials进行身份验证。然而,当他们使用的PC不是域名成员时,此代码不起作用。如何将用户凭据传递给代码?

public List<string> GetGroupNames(string userName)
{
    var pc = new PrincipalContext(ContextType.Machine, "DCServer01");
    var src = UserPrincipal.FindByIdentity(pc, userName).GetGroups(pc);
    var result = new List<string>();
    src.ToList().ForEach(sr => result.Add(sr.SamAccountName));
    return result;
}

上述代码在主体上下文

上被拒绝访问时失效。

谢谢

LDAP查找组时将身份验证传递给PrincipalContext

PrincipalContext提供了一个用于指定用户名和密码的构造函数。MSDN

public List<string> GetGroupNames(string userName)
{
    using (var pc = new PrincipalContext(ContextType.Domain, "DCServer01", authenticatedUserName, password)
    {
        var src = UserPrincipal.FindByIdentity(pc, userName).GetGroups(pc);
        var result = new List<string>();
        src.ToList().ForEach(sr => result.Add(sr.SamAccountName));
        return result;
    }
}
相关文章:
  • 没有找到相关文章