Cara mengubah sandi Windows 2000 pengguna melalui LDAP

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 269190 - Melihat produk di mana artikel ini berlaku.
Pemberitahuan
Artikel ini berlaku untuk Windows 2000. Dukungan untuk Windows 2000 berakhir pada 13 Juli 2010. The Pusat Solusi Windows 2000 akhir dukungan adalah titik awal untuk perencanaan strategi migrasi dari Windows 2000. Untuk informasi lebih lanjut lihat Microsoft Support Lifecycle Policy.
Perbesar semua | Perkecil semua

RINGKASAN

Anda dapat mengatur sandi pengguna Windows 2000 melalui ringan Directory Access Protocol (LDAP) diberikan pembatasan tertentu. Artikel ini menjelaskan cara menetapkan atau mengubah atribut password.

INFORMASI LEBIH LANJUT

Sandi yang disimpan dalam Active Directory pada objek pengguna di unicodePwd atribut. Atribut ini dapat ditulis dalam kondisi terbatas, tetapi tidak dapat membaca. Atribut hanya dapat diubah; itu tidak dapat ditambahkan pada pembuatan obyek atau tanya oleh pencarian. Untuk memodifikasi atribut ini, klien harus 128-bit Secure Socket Layer (SSL) sambungan ke server. Untuk sambungan ini menjadi mungkin, server harus memiliki Sertifikat server untuk koneksi RSA 128-bit, klien harus percaya sertifikat otoritas (CA) yang dihasilkan Sertifikat server dan klien dan server harus mampu enkripsi 128-bit.

Sintaks unicodePwd atribut adalah oktet-string; Namun, layanan direktori mengharapkan bahwa oktet-string akan berisi UNICODE string (seperti nama atribut menunjukkan). Ini berarti bahwa setiap nilai atribut ini berlalu dalam LDAP harus UNICODE string yang BER-dikodekan (Encoding aturan dasar) sebagai oktet-string. Selain itu, UNICODE string harus mulai dan berakhir dengan kutipan yang bukan merupakan bagian dari password yang diinginkan.

Ada dua kemungkinan cara untuk memodifikasi unicodePwd atribut. Yang pertama mirip dengan normal "pengguna Ubah sandi" operasi. Dalam kasus ini, permintaan modifikasi harus berisi Hapus dan tambahkan operasi. Hapus operasi harus berisi password saat ini dengan tanda kutip di itu. Tambah operasi harus berisi password baru yang diinginkan dengan tanda kutip di itu.

Cara kedua untuk memodifikasi atribut ini analog dengan administrator ulang sandi untuk pengguna. Untuk melakukan hal ini, klien harus mengikat sebagai pengguna dengan izin yang memadai untuk mengubah sandi pengguna lain. Permintaan modifikasi ini harus berisi pengoperasian tunggal ganti dengan password yang diinginkan baru dikelilingi oleh tanda kutip. Jika klien memiliki izin yang memadai, password ini menjadi sandi baru, terlepas dari apakah sandi lama.

Dua fungsi berikut menyediakan contoh operasi ini:
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;
}
				

Properti

ID Artikel: 269190 - Kajian Terakhir: 23 September 2011 - Revisi: 4.0
Berlaku bagi:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
Kata kunci: 
kbhowto kbmsg kbmt KB269190 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:269190

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com