asp.NetはDirectory Entryを利用してユーザーと起動パスワードを検証する

2919 ワード

コードはネット上のその他を参考にします
ネームスペース:System.DirectoryServices
 
.NET Framework
4.8 4.7.2 4.7.1 4.7 4.6.2 4.6.1 4.6 4.5.2 4.5.1 4.5 4.0 3.5 3.0 2.0 1.1
 
一:ユーザー名、パスワードなどの入力情報を照合する

        public static string Verify_PowerOnPwd(string userId, string userPwd)
        {
            string retmsg = "success";
            string strADPath = "LDAP://10.133.2.202";//       XXXX.com 133.134.0.1
            try
            {
                DirectoryEntry entry = new DirectoryEntry(strADPath, userId, userPwd);
                DirectorySearcher search = new DirectorySearcher(entry); //  DirectoryEntry       
                search.Filter = "(SAMAccountName=" + userId + ")";  //         =user
                SearchResult result = search.FindOne(); //     
                if (null == result)   //   
                {
                    retmsg = "cancel";
                }
            }
            catch (DirectoryServicesCOMException ex)
            {
                if (ex.ErrorCode == -2147023570)
                {
                    retmsg = ex.Message.ToString();// "   /    "; 
                }
                //throw ex; 
            }

            return retmsg;
        }

二:ディレクトリの下のすべての情報を取得する
StringBuilder sb = new StringBuilder(); 
        try { DirectoryEntry entry = new DirectoryEntry(string.Format("LDAP://{0}/OU={1},DC={2},DC={3}", domain, root, domain.Split('.')[0], domain.Split('.')[1]), domain + @"\" + user, pwd); 
            DirectorySearcher mySearcher = new DirectorySearcher(entry); 
            mySearcher.Filter = ("(objectClass=organizationalUnit)"); //      entry      
            sb.Append("[{id:'0',pid:null,text:'" + root + "',expand:true}"); 
            int i = 1; 
            foreach (SearchResult resEnt in mySearcher.FindAll()) //       
            { 
                string _a = resEnt.GetDirectoryEntry().Name.Split('=')[1]; 
                if (_a != root) { sb.Append(",{id:'" + i.ToString() + "',pid:'0',text:'" + _a + "'}"); 
                    DirectorySearcher m1 = new DirectorySearcher(resEnt.GetDirectoryEntry()); //       
                    m1.Filter = ("(objectClass=user)"); //          
                    foreach (SearchResult r1 in m1.FindAll()) //            
                    { sb.Append(",{ id:'" + r1.GetDirectoryEntry().Properties["sAMAccountName"][0].ToString() + "',pid:'" + i.ToString() + "',text:'" + r1.GetDirectoryEntry().Properties["Name"][0].ToString() + "'}"); 
                    } i++; 
                } 
            } 
            sb.Append("]");
        }catch(Exception)
        {}