使用Active Directory时超时问题
本文关键字:超时 问题 Directory Active 使用 | 更新日期: 2023-09-27 18:13:38
我想做几件事。首先,这个c#程序使用以下命令验证Active Directory用户凭据:
var ADentry = new DirectoryEntry("LDAP://domain", uname, pword);
但显然你需要以某种方式传递用户名和密码。是否有一种方法可以在用户从活动目录在网络上登录时自动检索它,并在字段中使用它,而无需在用户名和密码中使用用户名类型?
如果没有,我这样做是为了让用户可以在控制台中输入他们的凭据。但如果它不起作用,它就会永远挂在那里。我可以使用什么类型的代码在1分钟后超时,如果它一直挂起,否则它永远挂起?由于
我试图做一个LDAP查询,下面将为您做。其中大部分是方法,但您可能对这行代码感兴趣:PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain, sDefaultOU, ContextOptions.Negotiate);
完整代码在这里:
IsUserGroupMember("username", "group name the user is in");
public string sDomain = "your.domainName.com"
public string sDefaultOU = OU=**,OU=**,DC=**,DC=**,DC=**
public void IsUserGroupMember(string sUserName, string sGroupName)
{
try
{
UserPrincipal oUserPrincipal = GetUser(sUserName);
GroupPrincipal oGroupPrincipal = GetGroup(sGroupName);
if (oUserPrincipal != null && oGroupPrincipal != null)
{
//do something
}
else
{
//nothing
}
}
catch (PrincipalServerDownException)
{
throw;
}
catch (Exception)
{
throw;
}
}
public UserPrincipal GetUser(String sUserName)
{
PrincipalContext oPrincipalContext = GetPrincipalContext();
UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, sUserName);
return oUserPrincipal;
}
public GroupPrincipal GetGroup(string sGroupName)
{
PrincipalContext oPrincipalContext = GetPrincipalContext();
GroupPrincipal oGroupPrincipal = GroupPrincipal.FindByIdentity(oPrincipalContext, sGroupName);
return oGroupPrincipal;
}
public PrincipalContext GetPrincipalContext()
{
PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, sDomain, sDefaultOU, ContextOptions.Negotiate);
return oPrincipalContext;
}
我希望这段代码对你有用。