Jak změnit heslo uživatele systému Windows 2000 prostřednictvím LDAP

Překlady článku Překlady článku
ID článku: 269190 - Produkty, které se vztahují k tomuto článku.
Poznámka
Tento článek se týká systému Windows 2000. Podporu pro systém Windows 2000 končí na 13. července 2010.Windows 2000 End-of-Support Solution Center je výchozí bod pro plánování strategie přenesení ze systému Windows 2000. Další informace v tématu Microsoft Support Lifecycle Policy.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Souhrn

Můžete nastavit heslo uživatele systému Windows 2000 prostřednictvím LDAP Lightweight Directory Access Protocol () přidělena určitá omezení. Tento článek popisuje, jak nastavit nebo změnit atribut heslo.

Další informace

Heslo je uloženo v aktivním adresáři objekt uživatele v atributu unicodePwd. Tento atribut lze zapsat pod omezeným podmínky, ale nelze číst. Atribut lze upravit pouze; nemůže být přidána na vytvoření objektu nebo dotazovaný pomocí vyhledávání. Chcete-li upravit tento atribut, klient musí mít 128bitové připojení (Secure Socket LAYER) k serveru. Pro toto připojení možné musí server použil certifikát serveru pro připojení 128 bit RSA, klient musí důvěřovat certifikační autority (CA), která generovala certifikát serveru a klienta i serveru musí být schopné 128bitové šifrování.

Syntaxe atributu unicodePwd je řetězec oktet; však očekává adresářové služby (jako název atributu označuje) bude obsahovat řetězec oktet řetězec UNICODE. To znamená, že žádné hodnoty pro tento atribut předaný LDAP musí být jako řetězec oktet řetězce UNICODE jsou kódování BER (Basic Encoding pravidla). Řetězec UNICODE musí navíc begin a end nabídek, které nejsou součástí požadované heslo.

Změnit atribut unicodePwd dva možné způsoby. První je podobný "uživatel změnit heslo" normální operaci. V tomto případě úpravy požadavek musí obsahovat, odstranění a operaci přidání. Operaci odstranění musí obsahovat aktuální heslo s uvozovky kolem něj. Operaci přidání musí obsahovat požadované nové heslo s uvozovky kolem něj.

Druhým způsobem upravit tento atribut je analogická správce resetování hesla uživatele. Chcete-li to provést, musí klient vázat jako uživatel s dostatečnými oprávněními změnit heslo jiného uživatele. Tento požadavek úpravy by měl obsahovat operaci nahrazení jednoho s nové heslo požadované uzavřeny v uvozovkách. Klient nemá dostatečná oprávnění, toto heslo se stanou nové heslo bez ohledu na to, jaký byl původní heslo.

Následující dvě funkce obsahují příklady těchto operací:
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;
}
				

Vlastnosti

ID článku: 269190 - Poslední aktualizace: 29. června 2004 - Revize: 3.7
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
Klíčová slova: 
kbmt kbhowto kbmsg KB269190 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:269190

Dejte nám zpětnou vazbu

 

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