C# में AD प्रमाणीकरण करते समय गलत उपयोगकर्ता नाम या पासवर्ड अपवाद को कैसे हल करें?


सी# में एडी प्रमाणीकरण करते समय मुझे अपवाद “गलत उपयोगकर्ता नाम या पासवर्ड अपवाद” मिल रहा है। मैं सी# के साथ एएसपीनेट का उपयोग कर रहा हूं और फ्रेमवर्क 4.6.1 है। मैंने विंडोज़ प्रमाणीकरण मोड सक्षम और अज्ञात अक्षम सेट किया है। कोड तक पहुंचने पर मुझे अपवाद मिल रहा है

SearchResult sr = ds.FindOne();

.तब तक कोई अपवाद नहीं है. मुझे डोमेन, डोमेन उपयोगकर्ता सब सही मिल रहा है।

मैंने क्या प्रयास किया है:

मेरा कोड नीचे जैसा है:

Common.WriteDDSLog("ValidateWindowsUser()-Process Started for LoginId:" + txtLoginID.Text);
           //Added by Varun T V
           //Checks the user is active or not before sending credentials to Active Directory
           //Will send request to AD only when user is active
           BLL_Users objUser = new BLL_Users();
           string errorCode = "", errorMsg = "";
           DataSet dsUserExists = new DataSet();
           dsUserExists = objUser.CheckUserActiveOrExists(txtLoginID.Text.Trim(), ref errorCode, ref errorMsg);
           if (dsUserExists.Tables[0].Rows.Count > 0)
           {

               // Directory path
               string path = "LDAP://" + Domain;
               DirectoryEntry de = new DirectoryEntry(path);

               // Provide credentials to get to domain
               de.Username = Domain + "\\" + sUser;
               de.Password = sPassword;
               de.AuthenticationType = AuthenticationTypes.Secure;

               // Search result
               DirectorySearcher ds = new DirectorySearcher(de, null, new string[] { "distinguishedName" });
               SearchResult sr = ds.FindOne();

               if (sr != null)
               {
                   bSearchResult = true;

               }
           }

समाधान 1

प्रश्न में कोई त्रुटि संदेश उल्लिखित नहीं है। ध्यान दें, यदि क्रेडेंशियल गलत हैं, तो ds.FindOne() विधि एक अपवाद फेंक देगी, क्योंकि यह AD से कनेक्ट करने के लिए उपयोगकर्ता के क्रेडेंशियल्स पर निर्भर करती है। यह विधि क्रेडेंशियल्स को सत्यापित करने का सबसे प्रभावी साधन नहीं हो सकती है। बेहतर प्रदर्शन के लिए. यदि आप .NET 3.5 या नए पर काम करते हैं (हाँ आप 4.6.1 का उपयोग कर रहे हैं), तो आप इसका उपयोग कर सकते हैं System.DirectoryServices.AccountManagement नेमस्पेस और आसानी से अपनी साख सत्यापित करें:

सी#
// create a "principal context" - e.g. your domain (could be machine, too)
using(PrincipalContext pc = new PrincipalContext(ContextType.Domain, "YOURDOMAIN"))
{
    // validate the credentials
    bool isValid = pc.ValidateCredentials("myuser", "mypassword");
}

संदर्भ: इसके बारे में सब कुछ यहां पढ़ें:

[^]

コメント

タイトルとURLをコピーしました