2009-08-04 8 views
2

내가 작업중인 프로젝트는 사용자를 인증하기 위해 고객 Active Directory와 통합됩니다. 사용자 암호를 검색 할 일부 코드를 작성하려고 시도했는데 Active Directory에서 포트 636의 SSL 연결을 통해서만 관련된 속성을 노출한다는 것을 알고 있습니다.C# : SSL을 사용하는 Active Directory에 연결하는 방법?

다음 코드는 SSL을 사용하지 않고 프로그래밍 방식으로 연결하지만 다음 작업을 수행 할 수 있습니다. 'T는 암호 속성을 참조하십시오

static void Main(string[] args) 
{ 
    DirectoryEntry entry = new DirectoryEntry(@"LDAP://<IP>/CN=LDAP Test,CN=Users,DC=customer,DC=com"); 
    entry.AuthenticationType = AuthenticationTypes.None; 
    entry.Username = "CN=LDAP Test,CN=Users,DC=customer,DC=com"; 
    entry.Password = "<password>"; 
    if (entry != null) 
    { 
     foreach (Object propName in entry.Properties.PropertyNames) 
     { 
      Console.WriteLine((String)propName); 
     } 
    } 
} 

나는라는 예외가 SSL을 사용하는 코드를 변경하는 경우, 알 수없는 오류 (0x80005000)'.

Active Directory를 호스팅하는 서버에서 SSL을 사용하도록 설정하고 동일한 서버에 Microsoft CA를 설치하고 CA에서 인증서를 가져 왔습니다.

Apache Directory Studio를 사용하여 SSL을 통해 Active Directory에 연결할 수 있지만 암호 속성이 표시되지 않습니다.

static void Main(string[] args) 
{ 
    DirectoryEntry entry = new DirectoryEntry(@"LDAPS://<IP>:636/CN=LDAP Test,CN=Users,DC=customer,DC=com"); 
    entry.AuthenticationType = AuthenticationTypes.SecureSocketsLayer; 
    entry.Username = "CN=LDAP Test,CN=Users,DC=customer,DC=com"; 
    entry.Password = "<password>"; 
    if (entry != null) 
    { 
     foreach (Object propName in entry.Properties.PropertyNames) 
     { 
      Console.WriteLine((String)propName); 
     } 
    } 
} 

나는 곳으로 갈 어떤 도움을 크게 감상 할 수있다 확실하지 않다 :

다음 코드

내가 SSL을 사용하여 연결하는 데 사용하는 것을 시도하고있다 보여줍니다.

+0

관련 : http://stackoverflow.com/questions/287100/setting-up-ssl-in-active-directory-how-to/291826 –

+0

아담 자주 묻는 질문은 여기에 있습니다 : HTTP ://www.microsoft.com/windowsserver2003/adam/ADAMfaq.mspx#EOD –

+0

이 질문의 제목은 오해의 소지가 있습니다. "Active Directory에서 사용자 암호를 검색하려면 어떻게합니까?" SSL과 연결된 Active Directory에 연결할 수 있습니까? – Bratch

답변

2

나는 사용자의 암호를 검색하는 몇 가지 코드 를 작성하려고했습니다 ...

이것은 당신의 SSL 문제와 관련이 있지만, 나는 활동에서 사용자의 암호를 검색 생각하지 않는다 디렉토리가 가능합니다. 해시를 저장하기 때문에 사용자 속성을 쿼리 할 때 "비밀번호"속성을받지 못합니다.

업데이트 대답

의견을 읽고 나면, 당신이 보안 해시를 포함 unicodePwd 특성을 찾고 나타납니다. MSDN information에 따르면 해당 특성에 쓰기 작업을 수행하려면 특수 SSL 연결이 필요하지만 쓰기 전용 특성이므로 여전히 읽을 수는 없습니다. MSDN에서 특히

:

unicodePwd 특성

는 LDAP 검색에 의해 반환되지 않습니다.

사용자의 암호가 unicodePwd 특성에 사용자 개체에 Active Directory에 저장됩니다

여기 또한 내가 그 같은 말을하는 것 같다 발견 포럼 게시물입니다. 이 속성은 제한 조건하에 작성할 수 있지만 보안상의 이유로 인해 을 읽을 수 없습니다. (Source)

+0

그게 내가하는 해시 야. 나는 나의 지위가 그것에 관해 더 명백 할 수 있었다라는 것을 인정한다. 그 의도는 다른 시스템에서받은 해시를 Active Directory에 저장된 해시와 비교하거나 권한을 부여하는 것입니다. –

+0

해시 검색 관련 내 대답을 업데이트했습니다. –

0

로컬 저장소에 서버 인증서 및 루트 인증서를 추가해보십시오. 가장 쉬운 방법은 IE를 사용하여 https://your.domain.contoller:636에 연결하는 것입니다. 그런 다음 모든 인증서 화면을 클릭하여 상점에 추가하십시오.

관련 문제