So ändern Sie eine Windows 2000-Benutzer Kennwort über LDAP

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 269190 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Hinweis
Dieser Artikel bezieht sich auf Windows 2000. Unterstützung für Windows 2000 endet am Juli 13, 2010. Das Windows 2000 End-of-Support Solution Center ist ein Ausgangspunkt für die Planung der Strategie für die Migration von Windows 2000. Weitere Informationen finden Sie in den Microsoft Support Lifecycle Policy.
Alles erweitern | Alles schließen

Zusammenfassung

Sie können Windows 2000 des Kennwortes eines Benutzers über das Lightweight Directory Access Protocol (LDAP) erhält bestimmte Einschränkungen festlegen. Dieser Artikel beschreibt das Festlegen oder ändern Sie das Kennwort-Attribut.

Weitere Informationen

Das Kennwort wird in Active Directory auf einem Objekt im UnicodePwd-Attribut gespeichert. Unter speziellen Bedingungen kann dieses Attribut geschrieben werden, aber es kann nicht gelesen werden. Das Attribut kann nur geändert werden; kann nicht auf Objekterstellung hinzugefügt oder von einer Suche abgefragt. Um dieses Attribut zu ändern, muss der Client eine 128-Bit-Secure Socket Layer (SSL) Verbindung an den Server verfügen. Für diese Verbindung möglich ist, werden der Server muss über ein Serverzertifikat für eine 128-Bit-RSA-Verbindung verfügen, der Client muss die Zertifizierungsstelle (CA), die das Serverzertifikat generiert vertrauen und müssen sowohl Client-als auch 128-Bit-Verschlüsselung kann sein.

Die Syntax des Attributs ' UnicodePwd-Oktett; allerdings der Verzeichnisdienst erwartet, dass die Oktettzeichenfolge eine Unicode-Zeichenfolge enthalten (wie den Namen des Attributs angibt). Dies bedeutet, die alle Werte für dieses Attribut in LDAP-übergeben muss Unicode-Zeichenfolgen, die BER-codierte (Basic Encoding Rules) als ein Oktett-Zeichenfolge sein. Darüber hinaus muss die Unicode-Zeichenfolge beginnen und in Anführungszeichen, die nicht das gewünschte Kennwort gehören enden.

Es gibt zwei Möglichkeiten zum Ändern des Attributs UnicodePwd. Die erste ist vergleichbar mit einer normalen "Benutzer-Kennwort ändern" Vorgang. In diesem Fall muss die Anforderung ändern ein Löschvorgang sowohl ein Hinzufügevorgang enthalten. Der Löschvorgang muss das aktuelle Kennwort mit Anführungszeichen eingeschlossen enthalten. Die Add-Operation muss das gewünschte neue Kennwort mit Anführungszeichen eingeschlossen enthalten.

Die zweite Möglichkeit zum Ändern dieses Attributs entspricht ein Administrator beim Zurücksetzen eines Kennworts für einen Benutzer. Zu diesem Zweck muss der Client als Benutzer mit ausreichenden Berechtigungen so ändern Sie das Kennwort eines anderen Benutzers binden. Diese Anforderung ändern sollte einen einzelnes Ersetzen-Vorgang mit dem neuen gewünschten Kennwort von Anführungszeichen umgeben enthalten. Wenn der Client über ausreichende Berechtigungen verfügt, werden dieses Kennwort das neue Kennwort, ungeachtet dessen, was das alte Kennwort war.

Die beiden folgenden Funktionen geben Sie Beispiele für diese Vorgänge:
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;
}
				

Eigenschaften

Artikel-ID: 269190 - Geändert am: Dienstag, 29. Juni 2004 - Version: 3.7
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
Keywords: 
kbmt kbhowto kbmsg KB269190 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 269190
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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