c# - एमएस पैच KB3167679 के बाद सी#/ asp.net में सक्रिय निर्देशिका उपयोगकर्ता पासवर्ड बदलना



active-directory (1)

मैं वर्तमान में एक उपयोगकर्ता के लिए सक्रिय निर्देशिका उपयोगकर्ता पासवर्ड को बदलने पर किसी प्रकार की एक सर्वोत्तम अभ्यास की तलाश कर रहा हूं जब उपयोगकर्ता एस्पान आधारित वेब अनुप्रयोग में प्रवेश करता है और पासवर्ड समाप्त हो जाता है, और लॉग इन सत्र के दौरान ।

हम Windows Server 2008 R2, IIS7 पर .net ढाँचा 3.5 के साथ आइएटेंशन चला रहे हैं

अब तक मैंने इसका इस्तेमाल किया:

public int changeUserPassword(String _userID, String _oldPassword, String _newPassword, bool _change)
{
    try
    {
        PrincipalContext oPrincipalContext = new PrincipalContext(ContextType.Domain, "do.ma.in", "DC=do,DC=ma,DC=in",
        ContextOptions.SimpleBind, @"domain\admin_account", "admin_pw");
        UserPrincipal oUserPrincipal = UserPrincipal.FindByIdentity(oPrincipalContext, _userID);

        if (_change)
        {
            oUserPrincipal.ChangePassword(_oldPassword, _newPassword);
        }
        else
        {
            oUserPrincipal.SetPassword(_newPassword);
        }
        oUserPrincipal.Save();
    }
    catch (Exception e)
    {
        //error handling
    }
    return 1;
}

यह विधि लॉगिन के बाद उपयोगकर्ता की शुरुआत की गई पीडब्लू परिवर्तनों के लिए मामलों को समाप्त करता है, समयसीमा समाप्त पीडब्लू लॉगिन (चेंज पासवर्ड पद्धति) के दौरान बदलता है, और एक पासवर्ड रीसेट के लिए, जहां एक अस्थायी पासवर्ड उत्पन्न होता है (सेटपैसवर्ड विधि)।

कारण है कि हमें ChangePassword विधि की आवश्यकता है इसलिए वर्तमान पासवर्ड के बारे में उपयोगकर्ता की पुष्टिकरण है और इसलिए एडी पासवर्ड इतिहास लागू किया गया है, क्योंकि हम पिछले एक्स पासवर्ड की अनुमति नहीं देते हैं। SetPassword सिर्फ पासवर्ड सेट करता है, चाहे वह हाल के इतिहास में हो।

SetPassword अभी भी ठीक काम करने के लिए लगता है, लेकिन माइक्रोसॉफ्ट पैच KB3167679 के बाद से, परिवर्तन पासवर्ड पद्धति अब और काम नहीं करता। KB3167679 लेख विशेष रूप से उल्लेख किया गया है कि यह केवल उन खातों के लिए होता है जो लॉक या अक्षम हैं, लेकिन यह तब भी काम नहीं करता जब खाता सक्रिय होता है या "पासवर्ड की समय सीमा समाप्त" मोड में। अपवाद संदेश मैं geet "एक या अधिक इनपुट पैरामीटर अमान्य हैं"

मैंने पहले DirectoryEntry का उपयोग करते हुए अन्य क्रियान्वयन का उपयोग किया था, लेकिन यह दोषपूर्ण था, क्योंकि यह कभी-कभी काम करता था और कभी-कभी ऐसा नहीं होता, जो काफी परेशान था। इसलिए मैं उस पर वापस नहीं जाना चाहता था

हमने इसे एक ऐसे उदाहरण पर देखा है जिसमें नया पैच है, उदाहरण के बिना यह ठीक काम करता है मैं एक परीक्षण सर्वर पर व्यवहार को पुन: उत्पन्न करने में सक्षम था, विधि ने उल्लेख किया पैच स्थापित होने के बाद काम करना बंद कर दिया था।

दुर्भाग्य से माइक्रोसॉफ्ट इस लेख में सर्वश्रेष्ठ अभ्यास प्रदान नहीं करता है और मैं खुद को खोजने के लिए प्रतीत नहीं कर सकता तो सवाल यह है कि यदि आपके लिए एक टिप है तो यहां जाने के लिए मानक तरीका क्या है।


मुझे एक समान समस्या का सामना करना पड़ा है। ContextOptions को बदलने का प्रयास करें। ContextOptions के लिए सरल। बातचीत करें





active-directory