2014-05-09 1 views
3

Active Directory에 액세스하기 위해 C# .NET Framework 라이브러리를 개발 중입니다. 내가해야 할 일의언제 PrincipalContext를 만들려면 도메인 이름과 도메인 컨테이너가 필요합니까?

하나는 모든 AD 사용자를 얻는 것입니다, 나는 것을 볼 수 :

PrincipalContext principalContext = 
    new PrincipalContext(ContextType.Domain, 
          domainName.Trim(), 
          domainContainer.Trim()); 

그리고

PrincipalContext principalContext = new PrincipalContext(ContextType.Domain); 

이 코드와 같은 사용자를 반환

언제 도메인 이름과 도메인 컨테이너를 사용해야합니까?

답변

8

var context = new PrincipalContext(ContextType.Domain); 

를 사용하여 현재 상황에 맞는 로컬 사용자 인 경우 그것은 현재 컨텍스트의 영역, 일반적으로 도메인 응용 프로그램을 실행 한 사용자가에 로그인 또는 예외가 발생합니다 연결됩니다 도메인에 연결되지 않았습니다.

var context = new PrincipalContext(ContextType.Domain, domainName, domainContainer); 

도메인 속성을 사용하여 현재 컨텍스트가 권한을 가지고 있거나 유효한 자격 증명을 제공 가정, 현재 컨텍스트가 아닌 다른 도메인에 연결할 수 있습니다. 예를 들어 포리스트 또는 도메인 트러스트에 여러 도메인이있는 환경에서 사용자가 속한 도메인 대신 쿼리를 실행하는 다른 도메인을 지정할 수 있습니다.

컨테이너 속성은 지정된 컨테이너에 대해 DomainContext을 사용하는 모든 쿼리를 제한합니다.

+1

명확히하기 위해 사용자가 도메인에 연결된 컴퓨터에 있어야한다는 것을 의미합니까 (예 1)? – Cody

0

컨텍스트는 디렉토리 엔트리 그런 식으로 작성하는 데 사용됩니다 :

new DirectoryEntry("LDAP://domain_name/container") 

또는 더 용기가없는 경우 :

new DirectoryEntry("LDAP://domain_name/rootDse") 

당신은 도메인 이름을 생략 할 수 있지만, 나는 항상 포함하도록 제안 그것은 과거에 문제가 있었기 때문에 (무작위로 던져진 예외).

검색을 특정 OU로 제한하려면 컨테이너를 포함해야합니다.

관련 문제