Nasıl yapılır: LDAP aracılığıyla Windows 2000 kullanıcı parolasını değiştirme

Makale çevirileri Makale çevirileri
Makale numarası: 269190 - Bu makalenin geçerli olduğu ürünleri görün.
Duyuru
Bu makalede, Windows 2000 için geçerlidir. 13 Temmuz 2010 üzerinde Windows 2000 Destek sonlandırıyor.Windows 2000 End-of-Support Solution Center, Windows 2000'den geçiş stratejisini planlama bir başlangıç noktasıdır. Daha fazla bilgi için Microsoft Support Lifecycle Policy "konusuna bakın.
Hepsini aç | Hepsini kapa

Özet

Windows 2000 kullanıcı parolasını aracılığıyla olan Basit Dizin Erişimi Protokolü (bazı kısıtlamalar verilen LDAP) ayarlayabilirsiniz. Bu makalede, nasıl parola özniteliği ayarlamak veya değiştirileceği açıklanır.

Daha fazla bilgi

Parola, kullanıcı nesnesinde unicodePwd özniteliği Active Directory'de depolanır. Bu öznitelik, kısıtlı koşullarda yazılabilir, ancak bunu okunamıyor. Öznitelik yalnızca değiştirilebilir; bu olamaz nesne oluşturma eklenen veya bir arama tarafından sorgulanan. Bu özniteliğin değiştirmek için istemci sunucuya bir 128-bit Güvenli Yuva Katmanı (SSL) bağlantısı olması gerekir. Bu bağlantıyla mümkün, sunucu 128 bit RSA bağlantı için bir sunucu sertifikası sahip olması gerekir, istemci sunucu sertifikasını oluşturan sertifika yetkilisi (CA) güvenmelidir ve hem istemci hem de sunucu 128 bit şifreleme yeteneğine sahip olması gerekir.

UnicodePwd özniteliği sözdizimi sekizli dizesi; ancak, sekizli dize gösterir (özniteliğinin adı gibi) bir UNICODE dizesi içerecek dizin hizmeti umuyor. Bu öznitelik değerleri LDAP geçirilen anlamına gelir, sekizli dize olarak BER kodlanmış (Temel Kodlama Kuralları) olan UNICODE dize olmalıdır. Buna ek olarak, UNICODE dize başlar ve istenen parolayı bulunmayan tekliflerindeki sona erdirmek gerekir.

UnicodePwd özniteliği değiştirmek için iki olası yolları da vardır. Ilk normal bir "kullanıcı parola değiştirme" benzer işlem. Bu durumda, bir silme hem de bir ekleme işlemi değiştirme isteği içermelidir. Silme işlemi, etrafına tırnak geçerli parolayı içermelidir. Ekleme işlemi, etrafına tırnak istediğiniz yeni parolayı içermelidir.

Bu özniteliğin değiştirmek için ikinci bir yolu, bir yönetici, bir kullanıcı parolasını sıfırlama ROM'una benzer. Bunu yapmak için istemci başka bir kullanıcının parolasını değiştirmek için yeterli izinlere sahip bir kullanıcı olarak bağlanma gerekir. Bu değiştirme isteği, bir tek bir değiştirme işlemi, tırnak içine alınmış istenen yeni parola ile içermelidir. Istemcinin yeterli izinlere sahipse, bu parolayı ne eski parola olan ne olursa olsun yeni parolayı olur.

Bu işlemlerine örnek olarak şu iki işlev sağlar:
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;
}
				

Özellikler

Makale numarası: 269190 - Last Review: 29 Haziran 2004 Salı - Gözden geçirme: 3.7
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
Anahtar Kelimeler: 
kbmt kbhowto kbmsg KB269190 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:269190

Geri Bildirim Ver

 

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