내가 사용한 Active Directory 코드에 연결하려고합니다.
string domain = "domain.com.pk";
string container = "DC=mycompnay,DC=com,DC=pk";
string Admin = "salman.zafar";
string Password = "password";
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domain, container, Admin, Password))
{
string userPrincipalName = "dotnettest" + "@" + domain;
// validate the credentials
bool isValid = pc.ValidateCredentials(userPrincipalName, "Ascertia 12");
if (isValid) {
UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.UserPrincipalName, userPrincipalName);
}
코드가 도메인에있는 컴퓨터에서 실행중인 코드가 제대로 작동하지만 원격 인 AD 컴퓨터에 연결하려고하면 오류가 발생합니다.
string domain = "192.168.0.150:389/domain.com.pk";
그런 다음 작동하지 않았고 자격 증명 방법이 항상 false를 반환하는지 확인하십시오. 어떤 사람이 PrincipalContext 와 함께 포트로 IP를 사용하여 원격 활성 디렉토리에 연결하는 방법을 도와 줄 수 있습니까? 아니면 디렉토리 항목을 사용해야합니다.
어떤 도움을 주시면 감사하겠습니다
첫 번째 참고 :
코드가 도메인에있는 컴퓨터에서 실행될 때 코드가 제대로 작동합니다.
이 경우 PrincipalContext
컴퓨터가 도메인 구성원 (여기서 가정) 인 경우 생성자 에 adminuser + pw를 제공 할 필요가 없습니다 .
외부 도메인과 현재 도메인 사이에 신뢰가없는 다른 AD 서버 (도메인 컨트롤러)에 연결하려면 IP 주소 또는 서버 이름을 "도메인"이름으로 사용합니다.
string domain = "192.168.0.150";
목표가 자격 증명이 유효한지 확인하는 것이라면 admin user + pw를 생략 할 수도 있습니다.
string domainController = "192.168.0.150";
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, domainController))
{
string userPrincipalName = "dotnettest" + "@" + domain;
// validate the credentials
bool isValid = pc.ValidateCredentials(userPrincipalName, "Ascertia 12");
}
그러나이 경우에는
UserPrincipal up = UserPrincipal.FindByIdentity(...
PrincipalContext 자체가 로그온되지 않았기 때문입니다.
비슷한 질문에서 내 대답을 볼 수도 있습니다. https://stackoverflow.com/a/28690682/4547223
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다