2017-04-07 6 views
0

내가 직면 한 시나리오는 도메인에 가입되어 있지 않은 DMZ의 웹 서버에서 사용자 및 그룹 구성원 인 Active Directory 속성에 액세스해야한다는 것입니다. 우리의 인프라 팀은 DNS 이름으로 호출 할 수있는 특정 도메인 컨트롤러에 대한 LDAPS 연결을이 목적으로 열었습니다. (필자는 원래 PrincipalContext를 사용하여이 코드를 작성했지만 이것은 다른 도메인 컨트롤러에 대한 참조 된 쿼리를 생성하고 방화벽 제한으로 인해 실패했습니다. 따라서 하위 수준의 DirectoryServices API로 떨어집니다.)사용자 또는 그룹에 대해 특정 도메인 컨트롤러와 SID를 모두 사용하여 DirectoryEntry를 구성하는 방법은 무엇입니까?

특히 내가 할 수 있기를 원하는 것은 SID가 문자열로있는 보안 그룹의 구성원 목록을 특정 도메인 컨트롤러에 요청하는 것입니다.

나는이 같은 루트하여 DirectoryEntry 만들기 위해 특정 도메인 컨트롤러에 연결할 수 있습니다

var root = new DirectoryEntry("LDAP://mydc.mydomain.com"); 

을 ... 그리고 거기에서 내가 지금과 같은 이름으로 그룹을 검색하는 DirectorySearcher를 만들 수 있습니다

var searcher = new DirectorySearcher(root) { 
    Filter = "(&(object=(objectCategory=group)(cn=Group Name))" 
} 

잘 작동하지만 SID로 검색 할 수있는 동일한 구문을 찾기 위해 고심하고 있습니다. 내가 찾은 대부분의 스레드가 직접 SID 자체에 근거하여 DirectoryEntry를 인스턴스화이 구문을 제안한다

new DirectoryEntry(string.Format("LDAP://<SID={0}>", sid)) 

...하지만 내가 사용하는 도메인 컨트롤러를 모두 지정할 수있는 예를 찾을 수 없습니다 검색 및 검색 할 SID. 누군가 내게 옳은 방향으로 찔러 주면 고마워.

답변

0

나는 그것을 알아 냈 :

var root = new DirectoryEntry(string.Format("LDAP://mydc.mydomain.com/<SID={0}>", sid));