Active Directory 사용자가 암호를 업데이트 할 수있는 웹 응용 프로그램의 일부로 다음 코드를 사용합니다 (Active Directory와 Gmail의 경우). System.DirectoryServices.AccountManagement에서 C#을 사용하고 있습니다.C# Active Directory 호출 "ChangePassword"가 도메인에 연결할 수 없습니다.
이 코드는 어제부터 어제
try
{
State.log.WriteLine("Connecting LDAP.");
string ldapPath = "LDAP://192.168.76.3";
DirectoryEntry directionEntry = new DirectoryEntry(ldapPath, domainName + "\\" + userName, currentPassword);
if (directionEntry != null)
{
DirectorySearcher search = new DirectorySearcher(directionEntry);
State.log.WriteLine("LDAP Connected, searching directory for SAMAccountName");
search.Filter = "(SAMAccountName=" + userName + ")";
SearchResult result = search.FindOne();
if (result != null)
{
State.log.WriteLine("Getting User Entry.");
DirectoryEntry userEntry = result.GetDirectoryEntry();
if (userEntry != null)
{
State.log.WriteLine("Setting Password");
if (force)
{
userEntry.Invoke("SetPassword", new[] { newPassword });
}
else
{
userEntry.Invoke("ChangePassword", new object[] { currentPassword, newPassword });
}
userEntry.CommitChanges();
State.log.WriteLine("Changes Committed to ActiveDirectory.");
}
else
{
State.log.WriteLine("Could not get user Entry...");
}
}
else
{
State.log.WriteLine("Search returned no results.");
}
}
else
{
State.log.WriteLine("Could not connect to LDAP with given username and passwd");
}
}
때까지 일했다,이 코드 라인에 있습니다 :
userEntry.Invoke("ChangePassword", new object[] { currentPassword, newPassword });
을 한 후 다음과 같은 예외가 발생합니다 :
을 [ 8:37:00 AM] : 암호 요구 사항 충족.
[8:37:00 AM] : LDAP 연결 중입니다.
[오전 8시 37분 0초] :
SAMAccountName을
에 대한 LDAP 연결, 검색 디렉토리 [오전 8시 37분 1초] : 사용자 입력 받기.[오전 8시 37분 1초] : 비밀번호를 설정
[오전 8시 37분 1초] : 제이슨에 대한 Windows 암호를 재설정 할 수 없습니다.
호출 대상에 의해 예외가 발생했습니다.
시스템에서 도메인 컨트롤러에 연결하여 인증 요청을 처리 할 수 없습니다. 나중에 다시 시도 해주십시오. (HRESULT에서 예외 : 0x800704F1)
여전히 잘 작동 "SETPASSWORD"를 사용하여 "강제"옵션이 있지만, 관리자가 아닌 사용자에 의해 호출 할 수있는 "과 changepassword"방법은하지 않습니다.
이것은 매우 도움이됩니다. 감사합니다. –