directoryservices.accountanagement "قد تزال كلمة المرور" القديمة "التحقق من تغيير كلمة المرور

StackOverflow https://stackoverflow.com/questions/756726

سؤال

بعد إعادة تعيين كلمة مرور المستخدمين في Active Directory، إذا حاول المستخدم تسجيل الدخول باستخدام كلمة المرور القديمة، فإن التعليمة البرمجية التالية يتحقق من صحة:

Dim up As UserPrincipal = GetAdUser(objContext, arg_strBA, arg_strUsername)

If up IsNot Nothing Then

    Dim valid As Boolean = up.Context.ValidateCredentials(
    up.UserPrincipalName, arg_strPassword, ContextOptions.Negotiate)


    If (valid) Then strReturn = up.SamAccountName

End If

نقوم بإعادة ضبط كلمة المرور باستخدام التعليمات البرمجية التالية:

Dim objUser As New DirectoryEntry(arg_strLDAPPath)

If Not objUser Is Nothing Then
    objUser.AuthenticationType = AuthenticationTypes.Secure


    objUser.Invoke("SetPassword", arg_strNewPW)
    objUser.CommitChanges()
end if

تعمل إعادة تعيين كلمة المرور بشكل جيد ويمكن للمستخدم تسجيل الدخول بكلمة مرور جديدة، ولكن يجب ألا تزال كلمة المرور القديمة صحة.

عندما يعمل ValidATeCedentials أعلاه من أجل كلمة المرور القديمة، نقوم بتعيين بيانات الاعتماد على مكالمة خدمة ويب، والتي تفشل بعد ذلك باستخدام خطأ "401: غير مصرح به".

أي شخص ينظر إلى أي شيء من هذا القبيل؟

هل كانت مفيدة؟

المحلول 3

أنا ينفلى الجواب هنا

من الرابط ...

"ومع ذلك، فإن ما هو التهم هو أن السيء يفعل ليس ضمان استخدام Kerberos فقط. اتضح أنه في ظل مواقف معينة (مثل إذا كنت تحدد إعلانا بدلا من المحلي، ولديك خادم محدث بشكل كاف)، يختار الرمز أن يقوم بالتفاوض بغض النظر عن ما. وبهذا المعنى، فإن تحديد الختم ربما يعني أنه سيستخدم Kerberos، ولكن ليس بالضرورة حصريا. العلم الذي يهم حقا هو بلطف عدة طبقات تحت هذا. تحت الأغطية، تنتهي هذه الطريقة في إنشاء LDAPConnection، وضع بيانات اعتماد الشبكة للاتصال، إعداد أن AuthType (العلم الفعلي الذي يهم!)، وأخيرا استدعاء طريقة BIND (). تنشئ الأسلوب LDAPCONNECT.BIND () اتصال مصادق عليه بأحد خوادم الإعلانات باستخدام بيانات الاعتماد المحددة. المشكلة هي أنه عندما يقوم PrincipalContext.ValidateSentials بإعداد هذه المكالمة (في السيناريو الخاص بك)، فإنه دائما يضبط AuthType = التفاوض. في هذه الحالة، تعتاد Kerberos في الواقع على استخدامه، وينتهي الفشل، لكن النظام يقع مرة أخرى إلى NTLM. "

نصائح أخرى

لا ترتبط هذه المشكلة برمز ولكن Culprit أكثر من نسمع هو Active Directory ...

يرجى الرجوع http://support.microsoft.com/kb/906305. للحل ...

يعمل هذا - انظر الحل أدناه - واسمحوا لي أن أعرف إذا وجدت أن هذا مفيد حيث يتم تقسيم متجرنا حول ما إذا كان هذا حل موافق.

فيما يلي حل ل Active Directory يسمح بكلمة المرور القديمة للعمل بعد تغييره. أود أن أشبه إلى حد كبير الملاحظات حول قبول هذا الحل لأنه يستخدم Changepassword أثناء مصادقة تسجيل الدخول. هذا شيء غريب أن تفعله ولكنه يعمل. حاليا متجرنا لا يستخدم هذا الحل حتى إذا كان بإمكان أي شخص أن يقول لي إذا كانوا يستخدمونه أم لا سيكون موضع تقدير.

شكرا لك

Active Directory وكلمات المرور القديمة عودة صالحة (15 دقيقة إلى + - ساعة). يحدث هذا عند استدعاء SetPassword أو Changlywordword.

تاريخ:

أجد أن هذا يسمى "ميزة" للإعلان ويتم تصميمه حسب التصميم المدمج في إعلان بحيث عندما يغير المستخدم كلمات المرور هناك نوع من فترة السماح التي تتيح جميع الموارد باستخدام كلمات المرور هذه لنقلها إلى واحدة جديدة.

مثال واحد على الإعلان الذي يدعم المفهوم أن الإعلان يعرف كلمة المرور الأخيرة هي تغيير كلمة مرور تسجيل الدخول على جهاز كمبيوتر - في هذه الحالة لن يسمح الكمبيوتر بالكلمة القديمة تسجيل الدخول. على الرغم من أنني لا أملك الإجابة على هذا (بخلاف Microsoft)، اضطررت Microsoft إلى العمل)، فهذا رأيي أن هذا ليس بسيطا كما قد يظهر مثل جهاز الكمبيوتر يشارك ولديه كلمات مرور عليه أيضا.

مثال واحد يوضح كيفية إجراء تغييرات كلمة المرور في الإعلان في فترة زمنية

باستخدام سطح المكتب البعيد من صندوق Windows 7 إلى مربع Windows Server 2008 R2. قم بتسجيل الدخول من مربع أمان Windows ثم، انقر فوق مربع "موافق"، انقر فوق "موافق" وقمت بتسجيل الدخول. الآن قم بتغيير كلمة المرور الخاصة بك للمستخدم الذي استخدمته إلى جهاز التحكم عن بعد في المربع مع (يختلف عن مستخدم Kirkman الخاص بك ؟؟)، تسجيل الخروج وتسجيل الدخول مرة أخرى مع كلمة المرور القديمة (ضمن الإطار الزمني 15 دقيقة إلى ساعة + -). ستحصل لك كلمة المرور القديمة على مربع أمان Windows وعلى مربع "موافق". عند النقر فوق "موافق"، ستفشل بعد ذلك. إذا بدأت من جديد من سطح المكتب البعيد، فقم بإحاولة كلمة مرور سيئة، فسيتم إيقافها عند مربع أمان Windows برسالة "فشل محاولة تسجيل الدخول". بعد انتهاء المهلة الزمنية، لن تحصل على مربع أمان Windows مع كلمة المرور القديمة. (تأكد من البدء من سطح المكتب البعيد في كل مرة لا تبديل المستخدمين الذين سيعملون كما هو متوقع كما يوضح أيضا أن جهاز الكمبيوتر في المشاركة بطريقة أو بأخرى). على الأقل لا يوجد تسجيل دخول المستخدم - ولكن هذا يظهر أن (ما يبدو أنه مخصص) في مستوى يسمح بكلمات كلمات المرور القديمة للمصادقة مع مستوى ما.

البحث: لقد وجدت العديد من الإشارات إلى هذه المشكلة والحل المحتمل الوحيد واحد فقط لهذه النقطة لم أتمكن من تحديد ما إذا كان بإمكاننا تطبيقه (هذا هو الإشارة إلى الاتصال بدقة عبر Kerberos وليس NTLM وهو غير بسيط مثل قد تظهر وفقا للوثائق وبحوثي). لقد وجدت العديد من الروابط لمعرفة كيفية التفاعل مع الإعلان ولكن لا يوجد دليل إعلان حقيقي.

حل حل الحل - اقرأ هذا الجزء إذا كنت تريد حل الحل !!! الحاضر: لقد وجدت (عن طريق الصدفة أثناء الاختبار) أن مكالمة Nangepassword إلى الإعلان لن تسمح بتحويل الكلمة القديمة التي تم تمريرها إليها في تغيير كلمة المرور إلى كلمة المرور الجديدة. إن رأيي أن هذا الاختبار الذي يعمل في العمل غير معروف فعلا كما لم أجد أي إشارة إليه قيد الاستخدام. أنا فعلا لم أجد أي حل لهذه المشكلة. في صباح أحد الأيام، أدركت أنه يمكنني استغلال هذا الاستخدام لنظام التغيير لتوفير حل لهذه المشكلة - على الأقل من العمل يمكننا استخدامه على الفور حتى نتمكن من تحديد نهج أفضل.

أولا، أتحقق من أن كل شيء صالح ويعود الإعلان إلى أن كلمة المرور صالحة. ثم دعوة إلى تغيير كلمة المرور (اسم المستخدم، OldPassword، Newpassword) مع OldPassword و Newpassword كلمة المرور التي يوفرها المستخدم (كلاهما نفسه). أعرف أن أحدهما (ربما ثلاثة ولكن انتهاك سياسة كلمة المرور يمنعها من النتائج الناجحة) سيحدث. إما أن NoLDPassword هي جيدة ونفشل لأن سياسة كلمة المرور لم يتم الوفاء بها (التاريخ، لا يمكن أن تكون كلمة المرور الجديدة واحدة من كلمات مرور N الأخيرة) أو فشلنا لأن كلمة المرور القديمة غير صحيحة (إرجاع كلاهما كخطأ استثناء مع نص في الرسالة). نتحقق من هذا الشرط الأخير، وإذا لم يكن OldPassword غير صالح، فلا ندع المستخدم تسجيل الدخول.

المستقبل: ربما مجموعة ثانية من العيون سوف تساعد.
أعتقد أن الحل في الانتحال أو كيربروس. لم يكن لدي نجاح في معرفة ما يكفي على أي من هذه الأحوال. من الواضح أن الإعلان يمكن أن يفرق بين كلمات المرور القديمة لأن كلمة المرور الجديدة تفعل ذلك. ما نفعله هو في قلب الأمان، لذلك ليس كل شيء مفتوح (مثل القدرة على رؤية سجل كلمة المرور في الإعلان، لم أجد وسيلة للوصول إليها).

هل استغرقت وقتا ما يصل إلى 15 دقيقة في الاعتبار أن الإعلان يتطلب نشر تغييرات مثل هذا في جميع أنحاء الشبكة؟

مارك

أفترض أنك تقوم بتنفيذها بشكل صحيح في جهاز عميل. إذا كان هذا هو الحال، فسيكون له كلمة مرور قديمة (ناجحة) مؤقتا. يتم ذلك لتمكين المستخدمين من تسجيل الدخول إذا كان Active Directory غير متصل أو غير قابل للوصول. التغييرات الانتشار يستغرق بعض الوقت.

إذا كنت ترغب في الوصول إلى هذا، فيجب أن تتم المصادقة على الخادم الذي يخدم Webservice في وقت المصادقة بدلا من جهاز العميل المحلي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top