كيفية تغيير كلمة مرور مستخدم Active Directory ل Windows ودس عبر LDAP

تنطبق هذه المقالة على نظام التشغيل Windows 2000. ينتهي دعم ل Windows 2000 في 13 يوليو 2010- نقطة بداية لتخطيط استراتيجية الهجرة الخاصة بك من نظام التشغيل Windows 2000. لمزيد من المعلومات، راجع .

ملخص

يمكنك تعيين كلمة مرور المستخدم Windows Active Directory ودس عبر دليل بروتوكول الوصول الخفيف (LDAP) نظراً لقيود معينة. توضح هذه المقالة كيفية تعيين أو تغيير السمة كلمة المرور.

هذه الخطوات أيضا تنطبق على آدم ودس المستخدمين والكائنات أوسيربروكسي بنفس الطريقة كما فعلت مع مستخدمي AD.

مزيد من المعلومات

يتم تخزين كلمة المرور في الإعلان وقاعدة بيانات LDS على كائن مستخدم في السمة unicodepwd بين . يمكن كتابة هذه السمة الظروف المقيدة، ولكن لا يمكن قراءته. يمكن تعديل السمة فقط؛ لا يمكن إضافة على إنشاء كائن أو يطالب ببحث.

لتعديل هذه السمة، يجب أن يكون العميل أمان طبقة النقل (TLS) 128 بت/اتصال طبقة مأخذ التوصيل الآمنة (SSL) إلى الخادم. جلسة مشفرة باستخدام مفاتيح جلسة العمل إنشاء موفر الخدمات المشتركة باستخدام NTLM أو Kerberos مقبولة أيضا طالما تم الوفاء بالحد الأدنى لطول المفتاح.

لهذا يمكن الاتصال باستخدام TLS/SSL:

  • يجب أن يكون لدى الملقم شهادة ملقم لإجراء اتصال 128-بت RSA.

  • يجب على العميل الثقة المرجع المصدق (CA) الذي قام بإنشاء شهادة الملقم.

  • يجب أن تكون قادرة على تشفير 128-بت كلا الملقم والعميل.



يتم بناء جملة السمة unicodepwd بين سلسلة ثماني بتات؛ ومع ذلك، خدمة الدليل وتتوقع أن سلسلة ثماني بتات يتضمن سلسلة UNICODE (كما يشير إلى اسم السمة). وهذا يعني أن تمرير أي قيم لهذه السمة في LDAP يجب أن تكون سلاسل UNICODE ترميز تشرين الثاني/نوفمبر (الترميز القواعد الأساسية) كسلسلة ثمانية. وبالإضافة إلى ذلك، سلسلة UNICODE يجب أن تبدأ وتنتهي في عروض الأسعار التي ليست جزءا من كلمة المرور.

هناك طريقتين لتعديل السمة unicodepwd بين . يشبه الأول عادي "المستخدم تغيير كلمة المرور" العملية. في هذه الحالة، يجب أن يحتوي طلب تعديل كل من عملية إضافة وحذف. يجب أن تتضمن عملية حذف كلمة المرور الحالية مع علامات اقتباس حولها. يجب أن تتضمن عملية إضافة كلمة المرور الجديدة المطلوبة مع علامات اقتباس حولها.

الطريقة الثانية لتعديل هذه السمة يماثل مسؤول إعادة تعيين كلمة مرور لمستخدم. ولهذا الغرض، يتعين عليك ربط العميل كمستخدم لديه الأذونات الكافية لتعديل كلمة المرور الخاصة بمستخدم آخر. يجب أن يتضمن هذا الطلب تعديل عملية استبدال واحدة بكلمة المرور المطلوب محاطة بعلامات اقتباس. إذا كان العميل أذونات كافية، تصبح كلمة المرور كلمة المرور الجديدة، بغض النظر عن ما كانت كلمة المرور القديمة.

توفير وظيفتين التالية أمثلة على هذه العمليات:

ULONG ChangeUserPassword(WCHAR* pszUserDN, WCHAR* pszOldPassword,WCHAR* pszNewPassword)
{
ULONG err = 1;
LDAPMod modNewPassword;
LDAPMod modOldPassword;
LDAPMod *modEntry[3];
BERVAL newPwdBerVal;
BERVAL oldPwdBerVal;
BERVAL *newPwd_attr[2];
BERVAL *oldPwd_attr[2];
WCHAR pszNewPasswordWithQuotes[1024];
WCHAR pszOldPasswordWithQuotes[1024];

// Build an array of LDAPMod.

// For setting unicodePwd, this MUST be a double op.
modEntry[0] = &modOldPassword;
modEntry[1] = &modNewPassword;
modEntry[2] = NULL;

// Build mod struct for unicodePwd Add.
modNewPassword.mod_op = LDAP_MOD_ADD | LDAP_MOD_BVALUES;
modNewPassword.mod_type =L"unicodePwd";
modNewPassword.mod_vals.modv_bvals = newPwd_attr;

// Build mod struct for unicodePwd Delete.
modOldPassword.mod_op = LDAP_MOD_DELETE | LDAP_MOD_BVALUES;
modOldPassword.mod_type =L"unicodePwd";
modOldPassword.mod_vals.modv_bvals = oldPwd_attr;


// Password will be single valued, so we only have one element.
newPwd_attr[0] = &newPwdBerVal;
newPwd_attr[1]= NULL;
oldPwd_attr[0] = &oldPwdBerVal;
oldPwd_attr[1]= NULL;


// Surround the passwords in quotes.
wsprintf(pszNewPasswordWithQuotes,L"\"%s\"",pszNewPassword);
wsprintf(pszOldPasswordWithQuotes,L"\"%s\"",pszOldPassword);

// Build the BER structures with the UNICODE passwords w/quotes.
newPwdBerVal.bv_len = wcslen(pszNewPasswordWithQuotes) * sizeof(WCHAR);
newPwdBerVal.bv_val = (char*)pszNewPasswordWithQuotes;
oldPwdBerVal.bv_len = wcslen(pszOldPasswordWithQuotes) * sizeof(WCHAR);
oldPwdBerVal.bv_val = (char*)pszOldPasswordWithQuotes;


// Perform single modify.
err = ldap_modify_s(ldapConnection,
pszUserDN,
modEntry
);

if (err == LDAP_SUCCESS )
wprintf(L"\nPassword succesfully changed!\n");
else
wprintf(L"\nPassword change failed!\n");

return err;
}

ULONG SetUserPassword(WCHAR* pszUserDN, WCHAR* pszPassword)
{
ULONG err = 1;
LDAPMod modPassword;
LDAPMod *modEntry[2];
BERVAL pwdBerVal;
BERVAL *pwd_attr[2];
WCHAR pszPasswordWithQuotes[1024];

// Build an array of LDAPMod.
// For setting unicodePwd, this MUST be a single op.
modEntry[0] = &modPassword;
modEntry[1] = NULL;

// Build mod struct for unicodePwd.
modPassword.mod_op = LDAP_MOD_REPLACE | LDAP_MOD_BVALUES;
modPassword.mod_type =L"unicodePwd";
modPassword.mod_vals.modv_bvals = pwd_attr;

// Password will be single valued, so we only have one element.
pwd_attr[0] = &pwdBerVal;
pwd_attr[1]= NULL;

// Surround the password in quotes.
wsprintf(pszPasswordWithQuotes,L"\"%s\"",pszPassword);

// Build the BER structure with the UNICODE password.
pwdBerVal.bv_len = wcslen(pszPasswordWithQuotes) * sizeof(WCHAR);
pwdBerVal.bv_val = (char*)pszPasswordWithQuotes;


// Perform single modify.
err = ldap_modify_s(ldapConnection,
pszUserDN,
modEntry
);

if (err == LDAP_SUCCESS )
wprintf(L"\nPassword succesfully set!\n");
else
wprintf(L"\nPassword set failed!\n");

return err;
}

هل تحتاج إلى مزيد من المساعدة؟

توسيع المهارات
استكشاف التدريب
الحصول على الميزات الجديدة أولاً
الانضمام إلى Microsoft Insider

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

نشكرك على ملاحظاتك!

شكراً لك على الملاحظات! يبدو أنه من المفيد إيصالك بأحد وكلاء دعم Office لدينا.

×