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;
}
上述代码在主体上下文
上被拒绝访问时失效。谢谢
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;
}
}