LDAP 통한 Windows 2000 사용자 암호를 변경하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 269190 - 이 문서가 적용되는 제품 보기.
알림
이 문서에서는 Windows 2000 적용됩니다. 2010 7월 13일, Windows 2000 지원 끝납니다.Windows 2000 End-of-Support Solution Center Windows 2000에서 마이그레이션 전략 계획 수립 시작 지점입니다. 자세한 내용은 Microsoft Support Lifecycle Policy 을 참조하십시오.
모두 확대 | 모두 축소

요약

Windows 2000 사용자 암호를 통해 경량 디렉터리 액세스 프로토콜 (특정 제한 사항을 주어진 LDAP) 설정할 수 있습니다. 이 문서에서는 설정하거나 암호 특성을 변경하는 방법에 대해 설명합니다.

추가 정보

암호는 Active Directory 사용자 개체의 unicodePwd</a0> 특성에 저장됩니다. 이 특성은 제한된 조건에서 쓸 수 있지만 읽을 수 없습니다. 특성은 경우에만 수정할 수 있으며 이를 수 없는 개체를 만들 때 추가 또는 검색하여 쿼리할. 이 특성을 수정하려면 클라이언트 서버에 128비트 SSL (보안 소켓 레이어) 연결이 있어야 합니다. 이 연결의 수, 서버가 128비트 RSA 연결에 대한 서버 인증서가 있어야 합니다, 클라이언트에서 서버의 인증서를 생성한 인증 기관 (CA)를 신뢰해야 합니다 및 클라이언트와 서버 모두 128비트 암호화를 수 있어야 합니다.

unicodePwd 특성 구문 8진수 문자열, 8진수 문자열 특성 이름에서 나타나듯이 유니코드 문자열을 포함할 디렉터리 서비스, 예상합니다. 이 즉, 이 특성에 대한 값 LDAP에 전달된 유니코드 문자열을 BER 인코딩된 (기본 인코딩 규칙) 로, 8진수 문자열 있어야 합니다. 또한 유니코드 문자열 시작 및 원하는 암호를 일부가 아닌 큰따옴표로 끝나야 합니다.

두 가지 방법으로 unicodePwd 특성을 수정할 수 있습니다. 첫 번째 일반 사용자 변경 암호 유사한 작업을. 이 경우 수정 요청 삭제 및 추가 작업이 포함되어야 합니다. 삭제 작업이 현재 암호로 주위에 따옴표 포함해야 합니다. 추가 작업을 원하는 새 암호를 사용하여 주위에 따옴표 포함해야 합니다.

이 특성을 수정하여 두 번째 방법은 사용자 암호를 다시 설정하면 관리자가 유사합니다. 이렇게 하려면 클라이언트와 다른 사용자의 암호를 수정할 수 있는 권한이 있는 사용자로 바인딩해야 합니다. 이 수정 요청이 따옴표로 묶은 원하는 새 암호를 사용하여 단일 바꾸기 작업을 포함해야 합니다. 클라이언트는 충분한 권한을 가진 경우 이 암호를 어떤 이전 암호를 날짜와 상관없이 새 암호가 됩니다.

이러한 작업의 예로는 다음과 같은 두 가지 기능을 제공하는:
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;
}
				

속성

기술 자료: 269190 - 마지막 검토: 2004년 6월 29일 화요일 - 수정: 3.7
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional Edition
  • Microsoft Windows 2000 Datacenter Server
키워드:?
kbmt kbhowto kbmsg KB269190 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:269190

피드백 보내기

 

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