使用Active Directory时超时问题

本文关键字:超时 问题 Directory Active 使用 | 更新日期: 2023-09-27 18:13:38

我想做几件事。首先,这个c#程序使用以下命令验证Active Directory用户凭据:

var ADentry = new DirectoryEntry("LDAP://domain", uname, pword);

但显然你需要以某种方式传递用户名和密码。是否有一种方法可以在用户从活动目录在网络上登录时自动检索它,并在字段中使用它,而无需在用户名和密码中使用用户名类型?

如果没有,我这样做是为了让用户可以在控制台中输入他们的凭据。但如果它不起作用,它就会永远挂在那里。我可以使用什么类型的代码在1分钟后超时,如果它一直挂起,否则它永远挂起?由于

使用Active Directory时超时问题

我试图做一个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;
        }
我希望这段代码对你有用。