2009-08-18 5 views
4

내가 좋아하는 뭔가에 .NET DirectoryEntry.Path을 설정 한 경우 :CN이 아닌 사용자 이름으로 LDAP을 사용하여 ActiveDirectory를 쿼리하려면 어떻게합니까?

LDAP://CN=John Smith,OU=Group Name,DC=example,DC=com 

모든 것이 잘 작동하고, 내가 필요로하여 DirectoryEntry를 얻을. 그러나 사용자의 실제 공통 이름 (CN)을 알지 못합니다. 나는 그들의 사용자 이름 "John.Smith"만 알고 있습니다.

그래서 어떻게 사용자 이름을 쿼리 할 수 ​​있습니까? 나는 시도 모든 성공없이 다음 당신은 그냥 LDAP 문자열을 만드는 방법으로 쿼리 할 수 ​​없습니다

LDAP://CN=John.Smith,OU=Group Name,DC=example,DC=com 
LDAP://sAMAccountName=John.Smith,OU=Group Name,DC=example,DC=com 
LDAP://userPrincipalName=John.Smith,OU=Group Name,DC=example,DC=com 
LDAP://[email protected],OU=Group Name,DC=example,DC=com 
LDAP://uid=John.Smith,OU=Group Name,DC=example,DC=com 
LDAP://o=John.Smith,OU=Group Name,DC=example,DC=com 

답변

9

- 당신이 그 코드를 사용해야합니다. 같은

뭔가 다음 System.DirectoryServices.DirectorySearcher 클래스의 전체 MSDN 문서는 MSDN에서 찾을 수 있습니다

DirectoryEntry deRoot = new DirectoryEntry("LDAP://yourserver/CN=Users,dc=YourCompany,dc=com"); 

DirectorySearcher dsFindUser = new DirectorySearcher(deRoot); 
dsFindUser.SearchScope = SearchScope.SubTree; 

dsFindUser.PropertiesToLoad.Add("sn"); // surname = last name 
dsFindUser.PropertiesToLoad.Add("givenName"); // first name 

dsFindUser.Filter = string.Format("(&(objectCategory=Person)(anr={0}))", yourUserName); 

SearchResult rseult = dsFindUser.FindOne(); 

if(result != null) 
{ 
    if(result.Properties["sn"] != null) 
    { 
     string lastName = result.Properties["sn"][0].ToString(); 
    } 

    if(result.Properties["givenName"] != null) 
    { 
     string lastName = result.Properties["givenName"][0].ToString(); 
    } 
} 

- 추가적인 속성 및 설정 많이 있습니다.

.NET 3.5를 사용하는 경우 사용자 및 그룹을 처리하기위한 강력한 유형의 루틴 라이브러리를 사용하면 훨씬 쉽게 작업을 수행 할 수 있습니다. 자세한 내용은이 우수 MSDN article을 참조하십시오.

희망이

마크에게 일

+2

잘하는 데 도움이됩니다. 답변 해주셔서 감사합니다. 그러나 LDAP가 디렉토리를 쿼리하기위한 표준으로 간주되지 않습니까? 그래서 사용자 이름과 같은 속성을 쿼리하는 방법이 있어야합니까? Active Directory에서 사용자 이름과 같은 중요한 속성을 LDAP 쿼리에 노출 할 수없는 경우 왜 LDAP를 지원하는 척합니까? 내가 알 수 있듯이, 나는 아직도 ActiveDirectory에 화를 낸다. – Robert

+0

네, LDAP는 확실히 디렉토리의 표준입니다 -하지만 단순한 URL 기반 질의 기능이 있다는 것을 의미하지는 않습니다. (사실 대단히 좋습니다.) –

+0

AD는 몇 가지 가능한 이름 지정 속성을 가지고 있습니다. 어떤 사용자 이름입니까? – geoffc

관련 문제