Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để thay đổi mật khẩu Windows 2000 của người dùng thông qua LDAP

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:269190
Chú ý
Bài viết này áp dụng cho Windows 2000. Hỗ trợ cho Windows 2000 kết thúc vào ngày 13 tháng 7 năm 2010. Các Trung tâm giải pháp kết thúc hỗ trợ Windows 2000 là một điểm khởi đầu để lập kế hoạch chiến lược của bạn di chuyển từ Windows 2000. Để biết thêm thông tin xem các Chính sách vòng đời hỗ trợ của Microsoft.
TÓM TẮT
Bạn có thể thiết lập một người dùng Windows 2000 mật khẩu thông qua các Lightweight Directory Access Protocol (LDAP) được hạn chế nhất định. Bài viết này mô tả làm thế nào để đặt hoặc thay đổi các thuộc tính mật khẩu.
THÔNG TIN THÊM
Mật khẩu được lưu trữ trong thư mục hoạt động trên một đối tượng người sử dụng trong các unicodePwd thuộc tính. Thuộc tính này có thể được ghi trong điều kiện bị giới hạn, nhưng nó không thể đọc được. Các thuộc tính chỉ có thể sửa đổi; nó không thể được thêm vào sáng tạo đối tượng hoặc truy vấn bởi một tìm kiếm. Để sửa đổi các thuộc tính này, khách hàng phải có một 128-bit Secure Socket Layer (SSL) kết nối tới hệ phục vụ. Cho kết nối này có thể, hệ phục vụ phải có một chứng chỉ máy chủ kết nối 128-bit RSA, khách hàng phải tin tưởng authority giấy chứng nhận (CA) mà tạo ra chứng chỉ máy chủ và máy khách và hệ phục vụ phải được có khả năng mã hóa 128-bit.

Cú pháp của các unicodePwd thuộc tính là octet-chuỗi; Tuy nhiên, các dịch vụ thư mục sẽ octet-chuỗi sẽ chứa một chuỗi UNICODE (như tên gọi của các thuộc tính cho biết). Này có nghĩa là bất kỳ giá trị cho thuộc tính này thông qua tại LDAP phải là UNICODE dây được mã hóa BER (cơ bản mã hóa quy) như một octet-chuỗi. Ngoài ra, chuỗi UNICODE phải bắt đầu và kết thúc trong dấu ngoặc kép không phải là một phần của mật khẩu mong muốn.

Có hai cách có thể để sửa đổi các unicodePwd thuộc tính. Đầu tiên là tương tự như một bình thường "người dùng thay đổi mật khẩu" chiến dịch. Trong trường hợp này, yêu cầu sửa đổi phải chứa một xóa và một hoạt động thêm. Thao tác xóa phải có mật khẩu hiện thời với dấu ngoặc kép quanh nó. Chiến dịch thêm phải có mong muốn mật khẩu mới với dấu ngoặc kép quanh nó.

Cách thứ hai để sửa đổi các thuộc tính này là tương tự như người quản trị đặt lại mật khẩu cho người dùng. Để thực hiện việc này, khách hàng phải ràng buộc như một người sử dụng với đủ quyền để thay đổi mật khẩu của người dùng khác. Yêu cầu sửa đổi này nên chứa một hoạt động đơn lẻ thay thế với mong muốn mật khẩu mới bao quanh bởi các dấu ngoặc kép. Nếu khách hàng có đủ quyền, mật khẩu này trở thành mật khẩu mới, bất kể của mật khẩu cũ đã những gì.

Hai chức năng sau đây cung cấp các ví dụ về các hoạt động này:
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;}				

Warning: This article has been translated automatically

Thuộc tính

ID Bài viết: 269190 - Xem lại Lần cuối: 08/22/2011 08:27:00 - Bản sửa đổi: 2.0

Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Professional Edition

  • kbhowto kbmsg kbmt KB269190 KbMtvi
Phản hồi